wwwあり・なしを統一してください。

「ウェブサイトのURLでこれがうちのサイトです」と教えてもらって打ってみるとエラーが発生した!なんてことありませんか?幸いにも、今まで見てきたサイトはそんなことが少なかったのですが、wwwなしだとエラーが出る、wwwなしでもありでも表示できる、wwwなし(あり)だと統一してあるページヘ飛ぶというようなことがあると思います。すべてメリット・デメリットが有るとは思いますが、私の主張は"統一して飛ばしてください"です。

統一してなにか良いことあるの?

統一して良いことというのは、管理が楽だったりURLが1度変わるだけという点です。

SSL対応のサイトに接続したりする人がおられると思いますが、制作している側からすると”どちらでアクセスされるのかわからない”ということがあります。そのため、このサイトでは内部リンクではURLを使わずに更新するようにしています。Movable TypeなどのCMSを利用していると、SSL対象のページにはこのURLで…という対応が正直めんどくさくなるというのもありますが。

全部SSL対応にすればいいじゃん

多分、ここまで読むとそう思われる方もおられるかもしれません。ごもっともな意見なのです。

最近、NTTドコモを始めとした企業サイトがすべてのウェブサイト・ページでSSL通信を用いたサイト運営を初めています。正直、どうして保護しているのか突っ込みたい所があるのですが。(閲覧履歴が〜とかだと思う)

ただ、すべてHTTPS通信にしてしまうと以下のデメリットが発生します。

  • アクセスするまでに時間がかかる
  • 非公式テザリングユーザーが涙目になる(EasyTetherとか
  • 証明書を毎年更新しないといけない(=高コスト)

会員制サイトを構築してしまうとどうしてもメールアドレス等が個人情報となってしまうため、写真素材サイトでは構築していないのが現状ですよね。(それ以外にも管理が面倒とかあるかもだけど)

SSL対応がすべて良いというわけではないのです。

対応方法

レンタルサーバーを使っている場合は.htaccessファイルを利用できれば対応することが可能です。また、VPSであれば、以下のコードをバーチャルホストに追加することで対応できますし、Apacheを使っていれば.htaccessで対応することができます。

ドメインはexample.comで作成していますので、各環境に合わせて設定してください。

レンタルサーバーの場合

wwwなしに統一する場合


deny from all

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

wwwありに統一する場合


deny from all

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

Apacheの場合

以下のコードを追加してください。(conf.d以下に新しくファイルをつくるなり、httpd.confの一番下に記述)


    ServerName www.example.com
    Redirect / http://example.com/

nginxの場合

以下のコードを追加してください。

server {
   listen 80;
   server_name www.example.com;
   rewrite ^ http://example.com$request_uri? permanent;
}

※ wwwなしで統一、ありの場合は逆で。