この記事について
| 環境 | 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 はいまいちよく分からない。
