こちらの記事では、index.htmlの付いたURLを正規化する方法についてまとめていきます。
例えば、
http://example.com/index.html
のように、
URLにファイル名「index.html」を付けて運用されているサイトを時々見かけないでしょうか?
古い話になりますが、
私がWEBの世界に入った頃は、index.htmlを付けて運用しているサイトが多くありました。
もちろん、<a>タグにも、
index.htmlを付けたURLでリンク設定を行います。
↓
<a href="http://example.com/index.html">xxxxxx</a>
最近は、スラッシュ(/)終わりにするのが当たり前になっているのですが、
今でも、時々 http://example.com/index.html で運用されているサイトを見かけることがあります。
URLにファイル名を指定しなければ、WEBサーバ側で勝手にindex.htmlをトップページとみなしてくれるので、
わざわざURLに記載しなくてもいいんですが。。。
で、それはいいのですが、
問題は、
http://example.com/index.html
にも、
http://example.com/
にも当然のようにアクセス出来てしまうことです。
URLが分散しないように、必ずリダイレクト設定を行って、どちらかに統一しておきましょう!
コンテンツ
index.htmlの付いたURLの正規化
設定は、手っ取り早く、.htaccessを使って行ってしまいましょう。
以下の記述を、トップページと同じディレクトリ階層にある.htaccessに追記すればOKです。
※.htaccessが作成されていなければ、自分で作成して下さい
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]
※「example.com」の部分は、自分のサイトのドメイン名に書き換えて下さい。
また、リダイレクトは、「R=301」を付けて、301リダイレクトで設定して下さい。
.htaccessの設置が終わったら、
http://example.com/index.html へアクセスしてみて下さい。
http://example.com/ へ転送されればOKです!
と言いたいところですが、
最近はPHPで作成されているサイトも多く、
トップページがindex.htmlではなくindex.phpになっているサイトも多いです。
その場合にも対応できるように、
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://example.com/$1 [R=301,L]
という記述も、.htaccessに追記しておいた方がいいです。
ただ、同じような記述を2つ並べるのもアレなんで、
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteRule ^(.*)index.php$ http://example.com/$1 [R=301,L]
とまとめてしまった方がいいですね。
※まだ、index.htmにアクセスしてくるユーザーがいるかもしれないので、取り合えず、「htm」も入れておきます。
最後に
URLの正規化は、設定後のチェック作業が少し面倒ですが、
SEOにもかかわってくるので、必ず設定を行っておきましょう。
ただ、Googleの検索エンジンも、かなり賢くなっています。
いずれは、こういった正規化をしなくても、
http://example.com/index.html
も
http://example.com/index.php
も
http://example.com/
も、
同じURLと間違わずに認識してくれるようになるかもしれないですね。
そうなれば、
こちらも余計な手間が1つ減って、楽なんですが。
この記事へのコメントはありません。