SEOで欠かせない基本的なmod_rewrite

SEOで欠かせないURLの正規化を行うための、基本的なmod_rewriteをメモ。ここで言うURLの正規化とは、httpとhttps、www有りと無し、index.phpやindex.htmlを/にするなど、同一ページを複数のURLで表示させないようにすることです。リンクパワーを1URLに集約させるために必須な設定ですね。

●httpで統一
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^/(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

●httpsで統一
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^/(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

●www無しで統一
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]

●www有りで統一
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]

●index.phpを/で統一
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^/(.*)index.php $1 [R=301,L]

これで大体の場合OKでしょう。ただし、httpで統一する場合、サイト中にお問い合わせフォームなどの一部SSLページがある場合には、そのページを除外する必要があります。その場合はこんな感じの条件を追加しましょう。

RewriteCond %{REQUEST_URI} !(^/contact/)