第32回:.htaccess によるURL転送(リダイレクト)
第31回では、携帯端末とパソコンの振り分け方法について説明しました。今回は、カテゴリー名の変更、ドメイン名の変更などに伴うURLの変更時に、リダイレクト元サイトからリダイレクト先サイトへURLを転送させる方法について説明します。リダイレクトをするには、httpd.conf か .htaccess にその転送内容を記述しますが、ここでは、.htaccess を使ったURL転送について説明していきます。
Movable Type でカテゴリーを作成するとき、事前にある程度考えてからカテゴリーを作成していきますが、それでも、コンテンツが増えてくるにしたがって、「カテゴリーを細分化させたい」、「カテゴリーを一階層上に移動させたい」、というケースが少なからずでてくるかと思います。その場合、面倒な問題となるのがURLの変更ですが、リダイレクトを利用すれば、訪問者にURLの変更を意識させることなく、変更先URLへと簡単に導くことができるようになります。
リダイレクトには、永久的なリダイレクト(301 permanent)と
一時的なリダイレクト(302 temporary)の2種類があり、恒久的にURLを変更したい場合には、
301ステータスコード(301 Moved permanently )を返すようにします。
301リダイレクトをすることで、YahooやGoogleの検索データベースに登録された旧URLアドレスも、約2~3週間程度で新URLアドレスに変更されます。また、Googleのページランクも継承できるようになります。但し、この.htaccessのようなサーバーサイドリダイレクトを用いたURL転送にはその有用性に諸説あるようで、新旧の情報が入り混じっていてどの情報が正しいのか個人的には判断いたしかねますので、100%ページランクが継承されるとは保証いたしかねます(笑)。あくまで自己責任において行ってください。因みに、私個人の経験としては、以下で説明する方法で何の問題もなく正常にリダイレクトを行う事ができましたので参考までに。
もっとも慎重にURLの変更を行うのであれば、リダイレクトは一切使用せずに、全てのページに対して手動でリンク変更の旨を記載し、新しいアドレスへのリンクを貼っておくことです。こうすることで、Googleは、他のウェブ ページからのリンクをたどってサイトを発見することができるようになり、表示順位なども維持する事ができます。詳しくは、以下に記したGoogleのリンクを参考にしてください。
■参考:Google
URL を変更したのですが、どうすれば Google で登録されますか。
■参考:Yahoo!Japan
リダイレクトを設定している場合、どちらのURLがデータベースに登録されますか?
リダイレクトの書式は、以下の通りです。
Redirect permanent [ リダイレクト元] [ リダイレクト先]
まず、.htaccess を生成します。MT管理画面から「テンプレート」→「新規テンプレートの作成」で新規にテンプレートを作成します。出力ファイル名には「htaccess」と記述します。
「.htaccess」というファイル名にしてしまうと、再構築すると即座に .htaccess が機能してしまうので、最初はテスト用に「htaccess」という名前にしておき、問題がなくなったら最後に「.htaccess」にリネームするようにしましょう。きっと一発で完璧な .htaccess が生成されることはほとんどないからです。自分の環境にあわせて試行錯誤しながら「テンプレートの内容」を変更しましょう。オレンジ色で記した箇所は、特に各自の環境によって変わってきます。
テンプレート名:htaccess
出力ファイル名:htaccess
テンプレートの内容:
<MTEntries lastn="0">
Redirect permanent <$MTEntryPermalink relative_url="1"$> <$MTBlogArchiveURL$><$MTArchiveDate format="%Y/%m/%d/%H%M"$>.php
</MTEntries>
<MTArchiveList archive_type="Monthly">
Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink redirect_php="1"$>
</MTArchiveList>
<MTArchiveList archive_type="Category">
Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink redirect_php="1"$>
</MTArchiveList>
このテンプレートを保存・再構築すると、ブログディレクトリに 「htaccess」 という名前でファイルが生成されています。ファイルを開くと、大方以下のようになっています(※一行で見やすくするため、若干、簡略化してあります)。
Redirect permanent /blog/~/0530.php http://~/weblog/0530.php
Redirect permanent /blog/~/0304.php http://~/weblog/0304.php
・・・
・・・
Redirect permanent /blog/2006/04/ http://~/weblog/2006/04/
Redirect permanent /blog/2006/03/ http://~/weblog/2006/03/
・・・
・・・
Redirect permanent /05diary/news/ http://~/weblog/05diary/news/
Redirect permanent /05diary/diary/ http://~/weblog/05diary/diary/
・・・
・・・
もし、自分の意図する内容と全く異なるりダイレクト結果が出力されたならば、「テンプレートの内容」を各自の環境に合わせて編集し、再度、再構築を行いましょう。なお、日別アーカイブや、週別アーカイブがある方は、以下のソースも追記し、再構築しておきましょう。
Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink redirect_php="1"$>
</MTArchiveList>
<MTArchiveList archive_type="Weekly">
Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink redirect_php="1"$>
</MTArchiveList>
以上、.htaccess によるURL転送は終了です。何度か試行錯誤しながら、自分の環境にあう .htaccess を生成するようにしましょう。きっと、手動で .htaccess を作成するよりもはるかに短い時間で、しかも、デッドリンクのない 完璧な .htaccess を生成する事ができるでしょう。
最後に、当記事は、以下の本を参考にさせて頂きました。
ブログ簡単パワーアップ Movable Type スーパーカスタマイズテクニック