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でブログにアクセスして頂いた所、ページが表示されず、原因もすぐに突き止め教えて頂きました。
普通に生活していたら絶対に気づかないことですので、改めて懇親会に参加したり、他の人に直接ブログを見てもらう大切さを実感しました。