「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]
以下は「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 なし」で別々の同じ名前のクッキーが設定される。
クッキーを使った処理を記述していて、はまってしまったのでメモ。