htmlcss www の有無

2013年5月5日

301リダイレクトを利用

「www あり」で運用するのか、「www なし」で運用するのか。

どちらにしても、301リダイレクトを利用しどちらかに統一するようにする。以下は「Google ウェブマスターツール」からの引用。

ユーザーが複数の異なる URL を介してサイトにアクセスする場合。たとえば、ホーム ページに http://example.com/home、http://home.example.com、http://www.example.com といった複数の URL でアクセスできる場合、いずれか 1 つの URL を優先的な(正規の)リンク先として設定し、301 リダイレクトによって他の URL からのトラフィックをその優先 URL に送ることができます。

「www あり」に統一する場合は、以下を「.htaccess」ファイルに記述。(example.com の部分を自分のドメインに変更)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example¥.com)(:80)? [NC]
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
  • Rewrite Engine On として、RewriteCond ディレクティブで RewriteRule の条件を設定。
  • [NC] : 大文字小文字を区別せずにパターンと一致するかどうかをテストするフラグ。
  • 「www なし」でアクセスがあったら、「www あり」に 301 リダイレクトさせる。

以下は「www なし」で統一する場合の例。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www¥.example¥.com)(:80)? [NC]
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

以下のようにポート80 を使用している場合とそうでない場合に分けて記述する方法もある(参考)。

#URL Rewriting Guide Apache.org より
# For sites running on a port other than 80
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://www.example.com:%{SERVER_PORT}/$1 [L,R]

# And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www.example.com/$1 [L,R]

「www あり」と「www なし」の場合のクッキーの生成

「www あり」と「www なし」を統一していないと、クッキーを設定する場合にドメインを指定しないと、「www あり」と「www なし」で別々の同じ名前のクッキーが設定される。

クッキーを使った処理を記述していて、はまってしまったのでメモ。