解 説
サイトページのURL表示についてデフォルトでは、wwwが有る場合と無い場合、トップページのURLに/index.htmlが有る場合と無い場合、それぞれ同じページが表示されます。この状態ではコンテンツが同一の別ページとして認識されるため、ページの評価が分散したり、最悪の場合、ミラーコンテンツと解釈されてペナルティの対象になってしまうケースもあります。さらに、Googleアナリティクスでページ毎のアクセスカウントを計測していく場合など、URLが分かれて数値がカウントされてしまい、把握がしづらくなります。これらの対策として、URL表示を統一して管理していく方法があります。これを「URLの正規化」と言い、サイトを管理するうえで大事な設定となりますので、以下にご紹介します。
1.htaccessに以下の記述をすることで、www.表示の有無・index.html表示の有無を統一できます。
# www有りのURLに統一 RewriteEngine On RewriteCond %{HTTP_HOST} ^○○○ドメイン名○○○.co.jp RewriteRule ^(.*) http://www.○○○ドメイン名○○○.co.jp/$1 [R=301,L] # www無しのURLに統一 RewriteEngine On RewriteCond %{HTTP_HOST} ^www.○○○ドメイン名○○○.co.jp RewriteRule ^(.*) http://○○○ドメイン名○○○.co.jp/$1 [R=301,L] # index.html(php)無しのURLに統一 RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php) RewriteRule ^(.*)index.(html|htm|php)$ http://○○○ドメイン名○○○/$1 [R=301,L]
2SSLを導入した場合、http:// → https:// に転送させる設定は以下の通りです。
#サイト全体を https://のURLに統一 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] #サイトの一部のディレクトリを https://のURLに統一 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/login.php.*$ [OR] RewriteCond %{REQUEST_URI} ^/cart/.*$ RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
コード例は、サイトの全体をhttps://に転送させる場合と、サイトの一部(/login.phpと、/cart/ディレクトリ)を強制的にhttps://にリダイレクトさせる方法です。SSLページに転送させる方法は、レンタルサーバーの管理画面上で設定できる場合もあります。尚、Googleは2015年12月に、httpよりhttpsを優先的にインデックスするとアナウンスしました。
3301リダイレクトではなく、「カノニカルタグ」を使ってURLを統一する方法
headの中に、このようにカノニカルタグでドメインを指定することで、URL表示とページの評価を統一することが可能です。カノニカルタグは、ECサイトの最下層の商品別ページなどで、
・http://www.example.com/caseA.html
・http://www.example.com/caseB.html
・http://www.example.com/caseC.html
となっているようなページ(画像のみ異なるページ)を例えば「Aの商品ページ」に一本化するのに適しています。 このように設定することで、各商品ページの評価を一本化して重複コンテンツのペナルティを避ける事ができます。
上記は、URLのwwwをどちらかに統一して、index.html(php)は表示させない設定です。具体的には、URLにアクセスした際に「301リダイレクト」のページ転送が発動して「http://○○○ドメイン名○○○.co.jp」に自動的に遷移させています。