ドメイン移転のための301リダイレクト設定

カテゴリ:サイト運営&開発
日時:2010/02/27 14:00

2月上旬に独自ドメインを取得し、これを機会にURLの変更とサイトの分割を行ったわけだが、このために利用したのが「301リダイレクト」である。

301リダイレクトを行うと、旧URLへのアクセスを新URLへ自動的に転送し、ブラウザや検索エンジンにはこの転送が「恒久的な移転のためである」と知らせてくれる。GoogleやYahoo!も推奨している方法であり、ページランクも引き継がれるとされている。

301リダイレクトを行う方法は複数あり、このサイトでは3つの方法を組み合わせてる。メインとなるのは、旧URL「nekhet.ddo.jp」から新URL「reichsarchiv.jp」への転送である。これは、ドキュメントルートに設置した.htaccessで行う。

当初は、多くのWebページで紹介されている、mod_Rewriteを使わない方法である


Redirect 301 / http://reichsarchiv.jp/


を試してみたが、無限ループになってしまいうまくいかなかった。そこで、mod_Rewriteを使う方法に切り替えた。 まずは、ドメインをそっくり移転させる設定。以下は、すべて.htaccessに記述する方法である。


RewriteEngine on~
RewriteCond %{HTTP_HOST} ^(nekhet\.ddo\.jp)(:80)?~
RewriteRule ^(.*) http://reichsarchiv.jp/$1 [R=301,L]


これで、nekhet.ddo.jpへのアクセスは自動的にreichsarchiv.jpに転送された。サイト構造が変わっていなければ、これだけでOKだ。例えば、いちいち転送先を指定しなくても、

nekhet.ddo.jp/people/→reichsarchiv.jp/people/
nekhet.ddo.jp/etcdata/namespell.html→reichsarchiv.jp/etcdata/namespell.html

に自動的に変換される。

ついでに、URLの正規化を行った。つまり、www.reichsarchiv.jpというアクセスも「www」なしのreichsarchiv.jpに強制的に統一するのだ。これを実現するには、


RewriteCond %{HTTP_HOST} ^www\.reichsarchiv\.jp~
RewriteRule ^(.*) http://reichsarchiv.jp/$1 [R=301,L]


と記述する。まとめると、


RewriteEngine on~
RewriteCond %{HTTP_HOST} ^(nekhet\.ddo\.jp)(:80)?~
RewriteRule ^(.*) http://reichsarchiv.jp/$1 [R=301,L]~
RewriteCond %{HTTP_HOST} ^www\.reichsarchiv\.jp~
RewriteRule ^(.*) http://reichsarchiv.jp/$1 [R=301,L]


となる。

Gentoo Linuxで自宅サーバは、いささか面倒だった。従来、nekhet.ddo.jp/blog/4以下で運用していたページをgentoo.reichsarchiv.jpとして独立させたのだが、サイト構造が同一ではないのでシンプルな書き方ができない。幸いページ数も少ないので、ページ単位で個別にリダイレクトした。


redirect 301 /blog/4 http://gentoo.reichsarchiv.jp~
redirect 301 /item/736 http://gentoo.reichsarchiv.jp/item/1~
redirect 301 /item/737 http://gentoo.reichsarchiv.jp/item/2~
(中略)~
redirect 301 /item/955 http://gentoo.reichsarchiv.jp/item/70~
redirect 301 /item/962 http://gentoo.reichsarchiv.jp/item/71~


ページ単位の指定は、ドメイン単位の設定の前に記述する必要がある。ドメイン単位の指定を先にすると、上記の2行目の処理は


nekhet.ddo.jp/item/736~
 ↓~
reichsarchiv.jp/item/736~
 ↓~
gentoo.reichsarchiv.jp/item/1


と、2回リダイレクトが発生してしまう。ページ単位の指定を先にすれば、


nekhet.ddo.jp/item/736~
 ↓~
gentoo.reichsarchiv.jp/item/1


の1回だけで済む。