ドメイン移転のための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を使わない方法である
を試してみたが、無限ループになってしまいうまくいかなかった。そこで、mod_Rewriteを使う方法に切り替えた。 まずは、ドメインをそっくり移転させる設定。以下は、すべて.htaccessに記述する方法である。
これで、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に強制的に統一するのだ。これを実現するには、
と記述する。まとめると、
となる。
Gentoo Linuxで自宅サーバは、いささか面倒だった。従来、nekhet.ddo.jp/blog/4以下で運用していたページをgentoo.reichsarchiv.jpとして独立させたのだが、サイト構造が同一ではないのでシンプルな書き方ができない。幸いページ数も少ないので、ページ単位で個別にリダイレクトした。
ページ単位の指定は、ドメイン単位の設定の前に記述する必要がある。ドメイン単位の指定を先にすると、上記の2行目の処理は
と、2回リダイレクトが発生してしまう。ページ単位の指定を先にすれば、
の1回だけで済む。
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回だけで済む。