nginx rewrite

125 阅读1分钟

语法:

指令语法:rewrite regex replacement[flag];

默认值:none

应用位置:server、location、if

rewrite是实现URL重定向的指令,根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记

常用正则表达式:

字符 描述
\ 将后面接着的字符标记为一个特殊字符或者一个原义字符或一个向后引用
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或者多次
+ 匹配前面字符串一次或者多次
? 匹配前面字符串的零次或者一次
. 匹配除“\n”之外的所有单个字符
\d 匹配数字
{n} 重复n次
{n,} 重复n或更多次
[c] 匹配单个字符c
[a-z] 匹配a-z小写字母中的任意一个
(pattern) 匹配括号内的pattern, 通过$1、$2等调用

rewrite 最后一项flag参数:

标记符号 说明
last 本条规则匹配完成后继续向下匹配新的location URI规则
break 本条规则匹配完成后终止,不在匹配任何规则
redirect 返回302临时重定向
permanent 返回301永久重定向

nginx301跳转:

例:使用share.cn,访问www.share.cn会301跳转到share.cn

设置share.cn和www.share.cn解析到同一ip,设置好域名解析后修改nginx配置文件,修改nginx.conf的server_name部分

server_name share.cn www.share.cn; 
if ($host ~* www.share.cn) { 
    rewrite ^/(.*)$ http://share.cn/$1 permanent; 
}

重新加载nginx配置,访问http://www.share.cn 就会301重定向到http://share.cn了