Nginxで「www」有り、無しのURLを統一する方法
※本ページはプロモーションが含まれています

スマートフォン用ブラウザのSafariなどには、アドレスバーに直接URLを入力すると自動的に「www」を付けてしまうブラウザがあります。
例えば、このブログのURL
keikenchi.com
と入力すると
www.keikenchi.com
にアクセスしてしまうのです。僕のブログでは「www」付きのアクセスの設定をしていなかったので、エラーが表示されていました。

ユーザビリティやアクセスアップのためにURL周りの間口はしっかりしておいたほうが良いので、Nginxで「www」がある場合、無い場合でもアクセスできるようにする方法を紹介します。
サブドメインの設定
まず、ドメイン管理会社のホームページで「www」付きでのアクセスをできるようにする。
ムームードメインの場合は「ムームードメインでサブドメインを設定する方法」の方法で「www」をサブドメインに設定。
「www」付きURLから「www」を外す
「default.conf」を開く。
$ sudo vi /etc/nginx/conf.d/default.conf
下記コードを通常のサーバ設定の上に追加する。(example.orgを自分のURLにする)
server {
listen 80;
server_name www.example.org;
return 301 http://example.org$request_uri;
}
追加後はこんな感じになる。
server {
listen 80;
server_name www.example.org;
return 301 http://example.org$request_uri;
}
server {
listen 80;
server_name example.org;
…通常のサーバーの設定が続く
}
「www.example.org」でアクセスしてきたら「http://example.org」に301でリダイレクトしてパラメータも渡すという処理を行う。
保存したらサーバを再起動
$ sudo service nginx restart
「www」無しURLに「www」を追加する
先ほどの逆バージョン。変更後はこんな感じ。
server {
listen 80;
server_name example.org;
return 301 http://www.example.org$request_uri;
}
server {
listen 80;
server_name www.example.org;
…通常のサーバーの設定が続く
}
保存したらサーバを再起動
$ sudo service nginx restart
「www」有り、無しどちらでもアクセスできるようにする
「www」有り、無しどちらでもアクセスできるようにする設定はこんな感じ。
server {
listen 80;
server_name example.com www.example.com;
...通常のサーバーの設定が続く
}
server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}
保存したらサーバを再起動
$ sudo service nginx restart
おわりに
「www」付きのULRでアクセス出来ないことに気付いたのはWordCamp Tokyo 2014(WordCamp Tokyo 2014 へ行ってきたよレポート)の懇親会で、名刺交換していただいた方に指摘されて気付きました。
名刺交換してすぐにこのiPhoneでブログにアクセスして頂いた所、ページが表示されず、原因もすぐに突き止め教えて頂きました。
普通に生活していたら絶対に気づかないことですので、改めて懇親会に参加したり、他の人に直接ブログを見てもらう大切さを実感しました。
