拡張子のみ変更の301リダイレクト

サイト内のすべての拡張子を 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 はそのまま / だけでいいんだけどね。

初歩的すぎて、すぐに原因に気付けず、結構悩んでしまいました。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください