今回は、index.htmlの付いたURLを正規化する方法についてまとめています。
URLの正規化の方法について知りたい方は、ぜひ当記事を参考にしてください。

URLの正規化(スラッシュ終わりへの統一について)

例えば、
http://example.com/index.html
のように、
URLにファイル名「index.html」を付けて運用されているWebサイトを見かけないでしょうか?

古い話になりますが、
私がWebの世界に入った頃は、index.htmlを付けて運用しているWebサイトが多くありました。
もちろん、<a>タグにも、
index.htmlを付けたURLでリンク設定を行います。

<a href=”http://example.com/index.html”>xxxxxx</a>

最近は、スラッシュ(/)終わりにするのが当たり前になっています。
ですが、今でも、時々 http://example.com/index.html で運用されているWebサイトを見かけることがあります。

URLにファイル名を指定しなければ、Webサーバ側で勝手にindex.htmlをトップページとみなしてくれるので、
わざわざURLに記載しなくてもいいんですが。。。

で、それはいいのですが、
問題は、
http://example.com/index.html
にも、
http://example.com/
にも当然のようにアクセスできてしまうWebサイトがあることです。

URLの分散は、SEO上もよくありません。
分散しないように、必ずリダイレクト設定を行って、どちらかに統一しておきましょう!

index.htmlの付いたURLの正規化

URLの正規化設定は、手っ取り早く、.htaccessを使って行ってしまいましょう。

以下の記述を、トップページと同じディレクトリ階層にある.htaccessに追記すればOKです。
※.htaccessが作成されていなければ、自身で作成してください

index.htmlを/(スラッシュ)へ統一するコード

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

※「example.com」の部分は、自分のWebサイトのドメイン名に書き換えてください。
 また、リダイレクトは、「R=301」を付けて、301リダイレクトで設定してください。

.htaccessの設置が終わったら、
http://example.com/index.html へアクセスしてみてください。

http://example.com/ へ転送されればOKです!

index.html以外のURLの正規化

PHPで作成されているWebサイトも多く、トップページがindex.htmlではなくindex.phpになっているWebサイトも多いです。

その場合にも対応できるように、以下の記述も.htaccessに追記しておいた方がいいです。

index.phpを/(スラッシュ)へ統一するコード

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://example.com/$1 [R=301,L]

ただ、同じような記述を2つ並べるとごちゃごちゃします。
そこで、以下のようにまとめてしまった方がいいです。

index.html・index.phpを/(スラッシュ)へ統一するコード

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteRule ^(.*)index.php$ http://example.com/$1 [R=301,L]

※まだ、index.htmにアクセスしてくるユーザーがいるかもしれないので、とりあえず「htm」も入れておきます。

ちなみに、他にも、Ruby(Rails)やPythonなどPHP以外の言語で作成されているWebサイトもあります。
その場合は、状況に応じて記述内容を変更しましょう。

最後に

URLの分散は、SEO上マイナスになるので避けましょう。
正規化を行うことで「/(スラッシュ)」終わりのURLに統一し、Googleの評価を1つのURLに集中させることが大切です。

ただ、Googleの検索エンジンも、かなり賢くなっています。
実際には、
http://example.com/index.html

http://example.com/index.php

http://example.com/
も、
同じURLと認識してくれると思います。

ですが、念のために同一ページのURLは一つに統一しておきましょう。

ちなみに、URLの正規化は、他にも設定があります。
興味のある方は、こちらの記事もお読みください。

https://gachiserver.com/about-url-seikika/