例:【/home/www/hoge/に構築したサイトを/home/www/hoge2/へ移動したい】
この場合、ただ新しいディレクトリへファイルを移して古いディレクトリのファイルを削除しただけでは、
せっかく今まで検索エンジンにインデックスされていたURLはクリックしても404エラーになってしまい、ユーザが移転先へ辿り着けない。
(検索エンジンにインデックスされるURLが旧URLから新URLに切り替わるまで時間がかかるため)
という弊害が出てしまいます。
もしサーバが.htaccessの利用を許可しているのであれば、こういった問題も起こさずにスムーズに移動できます。
例の場合であれば
1.
Redirect permanent /hoge/ http://mydomain/hoge2/
2.
RewriteEngine on
RewriteRule ^hoge/(.*)$ http://mydomain/hoge2/$1 [R=301,L]
などの書き方があります。
移動元のパス(hoge)はドキュメントルート(htmlファイルなどが置ける領域の最上層)からのパスになります。
.htaccessというファイルを作って1か2を書いて、ドキュメントルートにおけばOKです。
ただし、2の書き方はApacheのmod_rewriteが有効になっている必要があります。
今回私は
aaa_1.html、aaa_2.html、aaa_3.html、・・・
という規則でつけれられたhtml名の先頭にfoo_をつけました。
foo_aaa_1.html、foo_aaa_2.html、foo_aaa_3.html、・・・
この規則に従わないファイルも存在しているのですが、置き換えたのは上記規則に従ったファイルだけです。
このようにリネームをしてしまった場合、今まで検索エンジンにインデックスされていたファイルはサーバに存在しなくなってしまいます。
検索サイトの検索結果からaaa_1.htmlをクリックされた場合にfoo_aaa_1.htmlへ誘導するため、.htaccessを以下のようにしました。
RewriteEngine on
RewriteRule ^aaa_(.*)\.html$ http://mydomain/foo_aaa_$1.html [R=301,L]
mod_rewriteが有効になっていない場合、
RedirectMatch permanent
という記述方法(Redirect permanentの正規表現版?)でRewriteRule同様に書けるようですが、私の場合はうまく動いてくれませんでした。(なぜだろう・・・)








今日はちょちょちょっと…
むむむ難しい…
ので応援クリックだけ押して逃げまする。。。
いつもありがとうございます (_ _)
.htaccessでのリダイレクト処理というのは私もそんなに経験がなくて今回のRewriteRuleも初めてやったことです。
一見難しく見えますがぐぐれば大体やりたいことがそのまま検索結果に出てくることが多いという・・・^^;