URLの正規化の必要性

今さらですが、一応ご紹介しておきます。自身の運用サイトにおいて、www.があっても無くてもURLを入力したらどっちも出現したり、index.htmlがあっても無くてもURLを入力したらどっちも出現したりするのは良くありません。ここではなぜ良くないかというのと、その対処法をご紹介します。

どっちが好き?

ふわふわ

URLの正規化が出来ていないとどうなる?

例えば、サイトのトップページが○○.jp/というURLだけでなく、○○.jp/index.htmlというURLでも出現しているとしましょう。そもそも(ファイル名、ファイル形式等によってもちろん異なりますが)index.htmlをFTPサーバーのトップにあげているため、サイトのトップページは○○.jp/でもあり、○○.jp/index.htmlでもある、という状況になります。これは原則どのサイトでも起こります。

「URLが異なるのに同じページが存在することになるから、これは重複ページだ!」等と言うつもりはございませんし、さすがにGoogle側もこれを取り締まったり低評価にしたりはしません。しかし、別URLが2つ存在することでプラスにならないケースがあるのも事実です。

例えば外部リンク。運用サイトを誰かが気に入ってくれてリンク紹介してくれたとしましょう。本来運用しているサイトURLは○○.jp/だったにも関わらず、リンク紹介されたサイトURLがたまたま○○.jp/index.htmlに充てられていたら…これはせっかくのリンクパワー(≒ページランク、リンクジュース)が分散されてしまう懸念が残ります。

同様に内部リンク。内部リンクのURLの記述方法を(Googleは絶対パスを推奨していますが)相対パスで記載した場合やルートパスで記載する際に、トップページへのリンクを“/index.html”を含んで記載すると、やはり分散してしまうこともあります。

↓赤い点線のようなリンクが貼られていたとしたら…勿体ないですよね。
リンク分散

ですので、URLはひとつに絞った方が良いのです。
これをURLの正規化と呼びます。

ふわふわ

URLの正規化のしかた

そこで、URLの正規化を図ります。以前にも「サイト制作時のSEO向け要件として定義しておきたい16選」でご紹介しましたし、繰り返しになりますが(ウェブサーバーがApacheであることが前提ですが).htaccessファイルで301リダイレクト設定を行うのです。

www.有無を.htaccessファイルへ記述

www.の有り無しを統一します。例えば、www.○○.jpに統一する場合は

RewriteEngine on
RewriteCond %{HTTP_HOST} ^○○\.jp
RewriteRule (.*) //www.○○.jp/$1 [R=301,L]

 
と.htaccessファイルに記述します。www.無にする場合はその逆です。
 

index.html等を.htaccessファイルへ記述

index.html等のファイル名を読み込ませず、”/”で終わらせるように設定します。内部外部リンクの分散を防ぐにも効果的です。.htmlだけでなく、様々なパターンもあると思いますので、

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.(cgi|do|java|html|htm|php|py|rb|shtml|xhtml)
RewriteRule ^(.*)index.(cgi|do|java|html|htm|php|py|rb|shtml|xhtml)$ //%{HTTP_HOST}/$1 [R=301,L]

 
と.htaccessファイルに記述します。

ちなみに.htaccessファイルで設定できない環境にある場合は、妥協案としてcanonicalを入れるというやり方もございまして

<link rel=”canonical” href=”//○○.jp” />

 
とHTMLファイルに記載するのですが、ユーザーには正規化していないURLでも閲覧出来てしまいますので正直あまりオススメしません。

ふわふわ

これで問題なし

前述の設定をしておけば、リンクの分散は防ぐことができます。ちなみに301リダイレクトがページランクを8割減にするとかいう都市伝説も今では無いようです。

 
意外と対応していないサイトが多いことに(今さらながら)気付きましたので、ご説明してみました。

目に見えてSEO的に良くなる、というわけではございませんが、勿体ないので対応しておくことをオススメします。