URLの正規化

index.phpやindex.htmlなどのデフォルトファイルをURLで指定した場合に、そのURLからスラッシュ(ファイル名なし)にリダイレクトさせる方法をメモ。

「/index.php or /index.html」から→「/」にリダイレクト

RewriteCondで条件を指定します。^.*/index.(html|php)でURLの末尾にindex.htmlかindex.phpが記述されていたら、301リダイレクトをかけます。

## indexファイル有り→無しに設定
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]

できた!\(^o^)/
ちょっと注意したいのが、さくらインターネットのレンタルサーバー(私の場合はスタンダードプランでした)の場合、RewriteEngine onの記述がないとうまくいきませんでした。メモメモ。

参考サイト

Apache HTTP Server Tutorial: .htaccess files
https://httpd.apache.org/docs/2.4/en/howto/htaccess.html