index.htmlをindex.htmにリダイレクトする方法

投稿日:

ルートでのみ、index.htmlを使っていて、その他のHTMLではすべて .htmを使っていました。
サブディレクトリ下もindex.htmで、index.htmlを使っているのはルート直下のみです。

しかもGoogle Analyticsの設定で、「www.example.com 」と入力された場合に「index.html 」のページを表示するようにしていました。
https://support.google.com/analytics/answer/1009675?hl=ja&utm_id=ad

この状態ではGoogle Analyticsでindex.htmlとindex.htmが別々にトラッキングされてしまいます。

このため、index.htmlをindex.htmに変更すると共に、301リダイレクトでindex.htmlでアクセスされた場合はindex.htmにリダイレクトされるように、.htaccessに以下の記述を追加。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com$1index.htm [R=301,L]

しかし上記だと、下層ディレクトリのindex.htmlも、すべてindex.htmにリダイレクトされます。
対象とするWebサイトではPHPプログラムも設置しており、 index.phpにリダイレクトさせているところもあります。
この場合、上記のままだと不都合なので、ルート直下のindex.htmlのみ、index.htmにリダイレクトさせるよう、以下のように記述を変更しました。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^index.html$ http://www.example.com/index.htm [R=301,L]

なお、上記はApatchにmod_rewriteモジュールがインストールされている場合の記述です。