.htaccessリダイレクトによるURLの統一

通常、トップページはhttp://example.comとhttp://example.com/index.htmlは同じファイルが表示されます。この異なるURLを.htaccessを利用して検索エンジンに1つのページとして認識させる方法を説明しています。

URLについて

 通常、トップページのURLを正確に記述すると「http://example.com/index.html」になります。example.comがドメイン名です。

 この他、http://部分を省略して「example.com/index.html」、index.htmlを省略して「example.com/」、最後の/を省略して「example.com」でも通常は通信可能です。

 http://部分はhttpで通信する事を意味しており、ブラウザではデフォルトになっているため省略可能で、省略時はhttpで通信します。https等他のプロトコルで通信する場合は明記が必要になります。

 「example.com/」、「example.com」と入力した場合、ブラウザからドメインのドキュメントルートを要求するようになっており、通常サーバーではドキュメントルートに対しては「example.com/index.html」を応答する設定になっているため、トップページが表示されます。

 この他、例えば「example.com/test」と指定するとtestというファイルを指しますが、testがディレクトリだった場合、example.com/test/index.htmlが表示されます。

【URLの指定方法】
URL指定例 本来の意味 表示されるファイル
http://example.com
/index.html
ドキュメントルートのindex.htmlファイル http://example.com
/index.html
example.com
/index.html
最初にhttp等の指定が必要
http://example.com/ ドメインのドキュメントルート
http://example.com ドメインのドキュメントルート
http://example.com
/test/index.html
testディレクトリのindex.htmlファイル http://example.com
/test/index.html
http://example.com
/test/
ドメインのtestディレクトリ
http://example.com
/test
ドメインのtestファイル

 サーバー側の設定にも寄りますが、このようにURLの指定方法は厳密にファイルまで指定しなくても表示されるようになっています。

URLの統一

 厳密に指定しなくても表示されると説明しましたが、このために検索エンジンでは複数のページがあると認識される可能性があります。

 例えば外部からのリンクで「http://example.com/index.html」と「http://example.com/」の2種類でリンクされていた場合、結果的に表示されるページは同じトップページでもURLが違うため、検索エンジンが違うページと認識する可能性があります。

 Googleでは同じページと認識するロジックになっているため余り気にする必要はありませんが、場合によっては2つのページと認識される事もあり、この場合は検索した時に上位に表示されるはずでも2つにリンクが分散されているため、下位に表示されてしまいます。

 又、検索エンジンだけでなく、様々なサービスを利用する場合でも異なるURLと認識されると「http://example.com/index.html」と指定した場合はカウントされて、「http://example.com/」と指定するとカウントされない等の不都合が発生する場合もあります。

 これを防ぐためには.htaccessの301リダイレクトを利用します。メモ帳等を利用して以下のように記載し、.htaccessというファイル名で保存し、サーバーにアップロードします。太字のexample.com部分は自身のドメイン名に編集が必要です。

【.htaccessを利用したリダイレクト】
RewriteEngine On

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

 上記を設定するとindex.htmlというファイルに通信が来たらindex.htmlファイルを応答するのではなく、/に再度通信して下さいと応答するようになり、ブラウザで自動的に/に対して通信を行います。

 例えばhttp://example.com/index.htmlにアクセスしにきたらhttp://example.com/にリダイレクトされますが、結果的に表のURLの指定方法で示した通りhttp://example.com/index.htmlが表示されます。このため、301リダイレクトを使うと検索エンジンではindex.htmlはなくなって/に統一されたと認識します。

 サブディレクトリに対しても同様にリダイレクトされるため、.htaccessの記述なしで統一されるものも合わせると以下のように統一されます。

【リダイレクトした場合のURL統一】
URL 統一されたURL
http://example.com
/index.html
http://example.com/
http://example.com/
http://example.com
http://example.com
/test/index.html
http://example.com/test/
http://example.com
/test/
http://example.com
/test

 このようにURLを統一する事で検索エンジンに異なるページと認識されないようにするだけでなく、ブラウザで認識するURLも統一出来るため、ブラウザのURLを検出するサービス、例えば「いいね!」等のソーシャルボタンを使う場合でも/と/index.htmlが混在する事を防げます。

  • このエントリーをはてなブックマークに追加

Access:カウンター(total)

Today:カウンター(today)   Yesterday:カウンター(yesyerday)