Atelierで“.htaccess”タグの付いているブログ記事

2009年4月 2日

隠居のHP:ページへのアクセス制限を .htaccess で設定する

 著作権の問題などで、以前にアクセス制限をかけたページを作成していた。
今回、公開したくないページを自分用につくりたかったので、以前に設定したときの方法を歳をとって衰えた記憶を頼りにたぐってみたが、細かい点までなかなか思い出せない。
再学習して新たにアクセス制限を設定したので、備忘録として記録しておきたい。
 今回参照させていただいたのは、ChamaNet というサイトが無償で提供しているベーシック認証である。詳細はこのページに詳しいが、記録はリンク切れになったときの用心のためである。

 アクセス制限は、.htaccess ファイル内に記述する。 .htaccess はMovable Type のバージョンアップにともないブログのURL を変更したときにも使った。詳しくは、<.htaccess で移転先URLページへ誘導する:MT4.1 >にアップしている。

 ページにアクセス制限をかける方法は、FTP を使い慣れておればそれほど時間はかからない。
Chamanet が提供してくれている次のようなテキスト・ファイルを Notepad かなにかで(私の場合は、秀丸を使っている)作成し、htaccess.txt とする。(FTP に FFFTP を使っている場合は、.htaccess というファイル名もOKである)
AuthUserFile /home/xxxxxx/n-shuhei.net/public_html/xxxxxxx/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

/home/xxxxxx/n-shuhei.net/public_html/xxxxxxx/ の部分はサーバーのルートディレクトリからアクセス制限をするディレクトリまでのフルパスである。

 .htpasswd は、ID(ユーザ名)とパスワードを:で区切った1行のファイルである。例えば、次のような表現になる。
nshuhei:KRQF6dfVUaeqo
パスワードは、base64 で暗号化されている。パスワードを base64 で暗号化するサービスは、上のベーシック認証のようないろいろなページで提供されている。
この .htpasswd ファイルをアクセス制限をしようとするディレクトリー(フォルダー)に、.htaccess ファイルとともに置けばよい。

 このような設定をしたあと、私がレンタルしているサーバーの Xserver を覗いてみると、ユティリティとして「アクセス制限」が提供されていることが判明した。自分が設定したフォルダー名一覧が表示され、フォルダー毎のアクセス制限の on off を切り替えるだけでアクセス制限を設定できる。この方法で上で設定したフォルダーのアクセス制限を on にして .htaccess ファイルの中味をみると 上述したコードが重複して書かれていた。
 レンタル・サーバーも、どんどん進化しているようである。このような作業をする場合には、先ず第一にレンタル・サーバーのユティリティを覗いてみる必要がある。

2008年7月 4日

.htaccess で移転先URLページへ誘導する:MT4.1

 MT4.1 で「小粋空間」さんのテンプレート・セットに移行したときに、ブログ名を変更した。とりあえず、元のメイン・ページ( http://n-shuhei.net/blog/ )へ訪問された方には、以前 ISP のホームページを移転するときに使っていた次のようなメタ・タグをメイン・ページの<head> ? </head> においた。
<meta http-equiv="REFRESH" content=" 5;URL=http://user-domain/new-blog/">

 これは、ページの移転の知らせを発信されている方のソースから、何も分からないままいただいたものである。この方法については、「.htaccessを活用する方法(6)」に詳しい。

 このメタタグをおくことで、元のメインページに訪問された方を新しいメインページに誘導できるが、Google search などで個別のアーカイブへ直接訪問される方は新しいページには誘導するには、全ての個別のアーカイブにメタタグを設置しなければならないから大変な作業となる。

 そこで、上の記事にも紹介されている .htaccess を使って誘導(redirect)する方法を試してみることにした。以前に、この .htaccess を使ってページへのアクセス制限を設定したことがあるが、redirect を使うのは初めてである。

 説明通りに、次のコードを元のブログ:http://n-shuhei.net/blog/ と同じフォルダーにある .htaccess ファイルに追加した。{私の場合、FTP ソフトは FFFTP を使っているが、いったんローカル側で、テキスト・エディター(私の場合は、秀丸)でコードを追加したファイルを作り、これを元の位置にアップロードしなければならない。}
Redirect permanent /blog/index.php http://n-shuhei.net/atelier/index.php

 このコード追加では、先ほどのメタタグの挿入と同じような効果が得られるだけである。

クリックすると大きくなります アクセス解析にはアクセス解析サービスの Research Artisan を使っているが、その解析のひとつである先月のページ別訪問は、screenshot のように、ほとんどが元のブログ(頭に Atelier Shuhei Weblog: とある。新しいブログは、頭に単に Atelier: とあるもの)のアーカイブへの訪問である。また、少ないがカテゴリー・アーカイブへの訪問もある。MT3.3 を単純に MT4.1 へバージョンアップした元のブログ・アーカイブはそのままおいているので、ページが見つからないということはないが、コメント入力などが不備な(実はそのために新しいテンプレート・セットを導入した)ページへの訪問となっている。
 図中にある 「Atelier Shuhei Weblog: 001DIY アーカイブ」への訪問を redirect するには、次のようなコードを .htaccess に追加する。
RedirectPermanent /blog/001diy/ http://n-shuhei.net/atelier/001diy/


 数が少なければ、上のようなコードを追加していけばよいのだが、個別アーカイブごとにコードを追加するのは大変な作業となる。そこで、「小粋空間」さんに紹介されている「.htaccess によるリダイレクト」を参考に、.htaccess に追加するコードを作成することにした。

方法は、
  1. この記事の 3.1 項にあるコードの次の個別アーカイブ部分を
    <MTArchiveList archive_type="Individual"> RedirectPermanent /blog/archives/<$MTArchiveDate format="%Y/%m"$>/<MTEntries><$MTEntryLink$></MTEntries> <$MTBlogURL$>archives/
    <$MTArchiveDate format="%Y/%m/%d_%H%M"$><MTEntries>.php</MTEntries> </MTArchiveList>
    下のようなコードに書き換え、説明通り「リダイレクト」(出力ファイル名:htaccess.txt)という名前でインデックス・テンプレートを作成した。
     <MTArchiveList archive_type="Individual"> RedirectPermanent /blog/archives<$MTArchiveDate format="/%Y/%m/%d-%h%m%s"$>.php  http://n-shuhei.net/atelier/<$MTArchiveDate format="%Y/%m/%d_%H%M"$>.php </MTArchiveList>
    ここでの $MTArchiveDate format= は、元のブログ(blog)のものは「アーカイブ・テンプレート」→「エントリー・アーカイブ」(MT3.3 ではこのような名称である)の「アーカイブ・マッピング」のパスで使っているフォーマットである。新しいブログ(atelier) では、「アーカイブ・テンプレート」→「ブログ記事」「アーカイブ・マッピング」のパスで使っているフォーマットである。
  2. 新しく作成したインデックス・テンプレート「リダイレクト」を保存・再構築すると、FFFTP のサーバー側に次のようなファイル(htaccess.txt)が表示される。
    RedirectPermanent /blog/archives/2008/06/10-110702.php  http://n-shuhei.net/atelier/2008/06/10_1107.php
    RedirectPermanent /blog/archives/2008/06/04-102457.php http://n-shuhei.net/atelier/2008/06/04_1024.php
    RedirectPermanent /blog/archives/2008/06/03-194435.php http://n-shuhei.net/atelier/2008/06/03_1944.php
    .
    .
    .
    .

     この作成されたコードをコピー&ペーストで、.htaccess に約400 のエントリー分コードを追加した。
     一見、上手くコード生成していると思われたが、うまく機能しない。
     先ほどのResearch Artisan に表示されるページのURLと作成したコードを子細に照らし合わせてみると元のアーカイブURLの分表示(%M)が月表示(%m)になっている。
    2008/06/04-102457 が正解なのだが、参照にいっているURLの表示では、2008/06/04-100657 となっているのだ。どうやら、MT3.3 から MT4.1 にバージョンアップしたときに、アーカイブ・マッピングの指定を間違ったらしい。 小文字の %m は月表示であり、大文字の %M は分表示なのだ。2?3の例で .htaccess に追加するコードを間違った方にしたら、上手く機能するようになった。
  3. この作業を作成したファイルをテキスト・エディターの秀丸にコピー&ペーストして行った。単純な作業だが、400近くの修正は結構なアルバイトであった。
  4. 修正したファイルを、ローカル側の.htaccess にコピー&ペーストして、サーバー側にアップロードすると、うまくリダイレクトしてくれるようになった。



(追記:2008/7/4)元のカテゴリー別のアーカイブにも訪問が割合あるので、上と同じような方法で、.htaccess に追加するコードを「小粋空間」さんの記事を参考に作成した。数が少ないので、マニュアルにいじってもそれほどの作業ではない。ただ、バージョンアップしてから、カテゴリー名を変更している場合は、特別なひもつけが必要である。
(追記:2008/7/8) Research Artisan をつぶさにみると、数は少ないが元の月別アーカイブに訪ねて来る人があるようなので、先ほどの「リダイレクト」インデックス・テンプレートを次のコードに書き換えて、.htaccess に追加するコードを作成した。月別アーカイブについては、コードの修正は全くなかった。
 この「リダイレクト」インデックス・テンプレートは、コードを生成するためのテンプレートなので、書き換えても問題はない。
 これで、元のブログはサーバーから削除しても大丈夫と思うが、まだ容量にゆとりがあるのでしばらくおいておくことにしている。
<MTArchiveList archive_type="Monthly">
RedirectPermanent /blog/archives/<$MTArchiveDate format="%Y/%m"$>/index.php http://n-shuhei.net/atelier/<$MTArchiveDate format="%Y/%m"$>/index.php
</MTArchiveList>

 Monthly Archive の後尾には、index.php をつけないと、individual archive のリダイレクトに不都合が起こる。