Nginx - www 有無を統一!!
Updated:
軽量 Web サーバ Nginx で URL をリダイレクトさせる方法についての備忘録です。
Apache なら RewriteCond
と RewriteRule
を使うところを Nginx ではどう記述すればよいのかということです。
“www” 付きの URL にも “www” 無しの URL にもそのままアクセスできるようになっているということは、 SEO 的にも効果が薄れます。
特に検索エンジンによるクロールで大きく影響がでます。”www” 付き URL と “www” 無し URL は別々の URL と判断されるので、”robots.txt”, “sitemap.xml” を設定していても効果が弱いということです。(Apache でも Nginx 等でも同じ)
実際には色々と設定できますが、今回は “www” なしの URL を “www” 付きの URL に統一させる方法に限定してます。
0. 前提条件
- Nginx のバージョンは 1.4.2 を想定
http://mk-mode.com
をhttp://www.mk-mode.com
にリダイレクトすることを想定。
1. 設定ファイル編集
元々 mk-mode.com
と www.mk-mode.com
のどちらでもそれぞれにアクセスできるようにしていたものを、mk-mode.com
にアクセスすると www.mk-mode.com
にリダイレクトするように変更する。
File: /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ===> 追加
server {
listen 80;
server_name mk-mode.com;
#rewrite ^ http://www.mk-mode.com$request_uri? permanent; # <= これでもよい
rewrite ^(.*)$ http://www.mk-mode.com$1 permanet;
}
# <=== 追加
# 元の server ディレクティブ
server {
listen 80;
#server_name mk-mode.com www.mk-mode.com; # <= コメント化
server_name www.mk-mode.com; # <= 追加
:
}
ちなみに rewrite
行最後の
permanent
は「恒久的なリダイレクト(HTTP ステータス:301)」last
は「一時的なリダイレクト(HTTP ステータス:302 を返してリダイレクト)」redirect
は「一時的なリダイレクト(即リダイレクト、HTTP ステータス:302を返す)」
という意味である。
2. Nginx リロード
# service nginx reload
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
nginx を再読み込み中: [ OK ]
3. 動作確認
ブラウザで www
無しの URL でアクセスし www
付きの URL にリダイレクトされることを確認する。
4. 参考サイト
別途、検索エンジンのウェブマスターツール(Google や Bing 等の大手)で、”www” の有無を統一するよう設定すれば、検索エンジンに適切にクロール・インデックス化されます。
その結果、サイトのアクセス数や広告の表示回数が大幅にアップします。
以上。
Comments