質問: index、index.php、index.htmlでアクセスされたときに、その階層にリダイレクトを行いたいです。 1例を除いてリダイレクトできていますが、なぜか1つだけリダイレクトできません。 やりたいこと例: https://www.hoge.com/index https://www.hoge.com/index.php https://www.hoge.com/index.html は全てhttps://www.hoge.com/にリダイレクト。 https://www.hoge.com/company/index https://www.hoge.com/company/index.php https://www.hoge.com/company/index.html は全てhttps://www.hoge.com/company/ にリダイレクト。 記載した.htaccessは以下です。 ``` #インデックスファイルを表示しない RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php) RewriteRule ^(.*)index.(html|htm|php)$ https://www.hoge.com/$1 [R=301,L] #indexで終わるURLはリダイレクト RewriteRule ^(.*)index$ https://www.hoge.com/$1 [R=301,L] ``` 結果として、上記6例のうち、ドキュメントルートの https://www.hoge.com/index だけがリダイレクトされず、そのままtopページが表示されてしまいます。 ドキュメントルート以外のindexは期待通りの動きをしていますが、 ネットで調べてみても、index.phpを非表示にする方法などがHITしてしまい、 やりたいindex(拡張子なし)をリダイレクトする方法が見当たりません。 どなたか対処方法をご教示ください。
回答: すみません。自己解決しました。 正規表現の最後に|を追加で期待通りの動きでした。 RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php|) RewriteRule ^(.*)index.(html|htm|php|)$ https://www.hoge.com/$1 [R=301,L]