サイト内のすべての拡張子を htmlからphpに変更したので、301リダイレクト設定した時のお話。
htaccessにリダイレクト処理を書いて実行するのだけど、とりあえずルートでは怖くてできないので、「test」ディレクトリを作ってその中で確認をしたんだよ。
で、ディレクトリ内にサンプルのファイルとhtaccessをtestディレクトリに上げましたとさ。
/test/demo.php
RewriteEngine on
RewriteBase /
RewriteRule ^(.*).html$ $1.php [R=301,L]
そして、htmlにアクセスして問題なく遷移してくれるかを確認すると・・・
http://URL.com/test/demo.html
ピンとくる人はココで既におかしいところに気づくと思います。
で、まぁアクセスした結果はというと、
http://URL.com/test/demo.php には飛ばず、
http://URL.com/demo.php の階層が一つ上がってしまったんですわ orz
問題となっていた点は、
検証ディレクトリは、/test/なので、RewriteBase は、/test/ にしなくてはいけないのを / にしてたからルートまで戻ってしまっていました。
RewriteEngine on
RewriteBase /test/
RewriteRule ^(.*).html$ $1.php [R=301,L]
ルートに置く場合、RewriteBase はそのまま / だけでいいんだけどね。
初歩的すぎて、すぐに原因に気付けず、結構悩んでしまいました。
コメント