zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

nginxの301リダイレクト(ディレクトリマッピング)設定例

■概要
サイトの構造が変化したとき、Google検索エンジンがランクを下げない様に、あらかじめ旧URL→新URLへの301転送を設定するのですが、大量のページに対しては以下の方法でまとめて設定するのがよさそうだったのでメモ。

例)
■旧■http://hogehoge.com/dir1/dir2/index.html
   ↓
■新■http://hogehoge.com/dir1/index2.html
など


【参考サイト】
http://polidog.jp/2015/02/09/nginx/
nginxでmapモジュールを使って301リダイレクトを行う
※上記まんまです。以下は自分用メモ。。


# HttpMapModuleモジュールが利用できるか確認
nginx -V でconfigure argumentsを確認。
→ngx_http_map_moduleがdisableになっていないのでngx_http_map_moduleを利用可能


1)/etc/nginx/redirect_list.mapにはこんな感じで記述します。

~^/dir1/dir2/index.html$ /dir1/index2.html;

2)上記をインクルードします。今回は80へのリクエストに限定されるので、以下の様な感じ。

map $request_uri $new {
include /etc/nginx/redirect_list.map;
}

server {
listen 80;
server_name hogehoge.com;

if ($new) {
rewrite ^ $new permanent;
}
}

【動作メモ】
1)$request_uri にredirect_list.mapの一覧にヒットするものがあったら、$newに遷移先が入る
2)$newに値が入っていたら301リダイレクトする