にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2015/09/22. 13:18:39.

サブドメイン名「www」を付加するURLに統一する方法

最近のレンタルサーバだと、独自ドメイン名でアクセスする際に、サブドメイン名として「www」を付けても付けなくても同じウェブサイトにアクセスできる仕様になっていることが多い気がします。

例えば、
http://www.example.com/ にアクセスしても、
http://example.com/ にアクセスしても、
同じ内容が表示される感じ。

この状態のまま放置しておくと、検索エンジン側に同じサイトが2つあると認識されてしまう可能性があります。まあ、さして実害はありませんが、SEO面をとても気にするとか、URLを元にして何かを実行するようなスクリプトを書いているとか、wwwの有無を統一したい場合があります。

ウェブサーバがApacheの場合で、mod_rewriteモジュール(=URLを指定した条件で書き換えるためのモジュール)が使用可能であれば、.htaccessファイルに以下の3行を含めておくことで、「wwwあり」に統一できます。
閲覧者が、wwwサブドメインを省略したURLでアクセスしてきても、強制的にwwwサブドメインを付加したURLに転送できます。

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

1行目は、URLの書き換えを行うよ、という宣言みたいなもの。(必ずこのまま記述)
2行目の「RewriteCond」は、調べる対象と、条件(一致パターン)の指定。
3行目の「RewriteRule」は、URLの書き換え内容の指定。

2行目では、

  • 「%{HTTP_HOST}」で、ホスト名を調べる対象に指定しています。ホスト名というのは、http://www.example.com/hoge/ の www.example.com の部分のこと。
  • 「^(example\.com)(:80)?」で、一致パターンを指定しています。「^」とか「?」の各記号は正規表現です。ここでの意味をざっくり言うと、「ホスト名が先頭から『example.com』で始まっていて、その後に『:80』(※)が0個または1個ある場合」となります。
  • 「[NC]」は、大文字・小文字を区別しない指定です。なので example.com でも EXAMPLE.COM でも Example.Com でも該当します。

※「:80」というのは、ポート番号です。通常、ウェブの場合は80番が使われます。
http://www.example.com/ というウェブサイトは、
http://www.example.com:80/ というURLでもアクセスできます。
まあ、普通は80番なので、「:80」という記述は省略されますが。
たまーに、「:8080」みたいなポート番号を指定する必要のあるウェブとかがあります。

※ただ、ここでは「(:80)?」の記述は別に存在しなくても問題ない気がしますが……。ポート番号付きのURLでアクセスしても、(ブラウザ側の仕様なのかウェブサーバ側の仕様なのか分かりませんが、ポート番号は自動的に省略されるので……。)

3行目では、

  • 「^(.*)$ http://www.example.com/$1」で、あらゆるアクセス(URL)の先頭に「http://www.example.com/」を加えています。ちなみに、ここを「http://example.com/」にすれば『wwwなし』のURLに統一できます。
  • 「[R=301,L]」の「R=301」は、HTTPステータスコード301で転送するという意味です。恒久的に移転したことを示す「301 Moved Permanently」を返した上で移動します。
  • 「[R=301,L]」の「L」は、そこでURLの書き換え処理を終了するという指示です。それ以後にURLの書き換え処理が続けて記述されているときに、それらによってさらにURLが変化してしまうのを防ぐために書いておきます。

というわけで、サブドメイン名「www」を付加するURLに統一する方法でした。

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---