RewriteRuleで同じ名前のフォルダから同じファイルへのリダイレクトができない

この記事について

環境apache(.htaccess)
目的/top/ というURLで top.php にリダイレクトさせたい
結果同名ファイルが存在するとうまくいかず。別名なら動く(原因は未解明のまま)

つまずきポイント要約

  • 転送先ディレクトリに .htaccess があると転送後にさらにリダイレクトが実行されてはまる
  • ルールと同名の実ファイルがあるとリダイレクトされなかった

top.html というファイルに http://example.com/top/ というurlでアクセスするために、.htaccess に以下の記述をした。

RewriteEngine on
RewriteRule top/$ /top.php

しかしリダイレクトがされない。なぜか?
おそらく RewriteRule の「top/$」の部分は、そういう名前のファイルがないことを条件に指定したパスへリダイレクトを行うからだと思う。だから、top.php という名前のファイルが存在している状態で「RewriteRule top/$」と指定すると top.php というファイルがあるからリダイレクトにならない。(本当なら「top/」のパターンに top.php はマッチしないはずだが)

ひとつわかったこと
転送先のURLのディレクトリに .htaccess ファイルがあると転送後にさらにリダイレクトが実行されるのではまる!!

top.php ファイルがルートディレクトリにない状態だとリダイレクトできる。
ただ、ファイルがないので404エラーになる。
↓↓

RewriteEngine on
RewriteRule top/$ /top.php

top.php ファイルがルートディレクトリにある状態でも以下の書き方ならリダイレクトする。

RewriteEngine on
RewriteRule top/$ /toppage.php

OR

RewriteEngine on
RewriteRule tap/$ /top.php

RewriteRule はいまいちよく分からない。

タイトルとURLをコピーしました