概念:
使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。
rewrite只能放在server{}、location{}、if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,
例如: http://seanlook.com/a/we/index.php?id=1&u=str,只对/a/we/index.php重写。

语法:
rewrite regex replacement [flag]
regex:正则表达式匹配请求的URI 
replacement:替换后的URI或URL,如果替换字符串以http、https或$scheme开头,则匹配终止,并返回客户端 
flag:标志,参数如下:         
last  #停止处理后面rewrite指令,并用替换后的URI重新发起一次请求,再一次匹配location,
如果重新匹配循环的次数超过10次,nginx会返回500错误,返回302 http状态码,浏览器地址栏显示重地向后的url
break   #停止处理后面rewrite指令,返回302状态码,浏览器地址栏显示重地向后的url         
redirect #临时重定向,返回302状态码,浏览器地址栏显示重地向后的url
permanent #永久重定向,返回301状态码,浏览器地址栏显示重定向后的url

rewrite例1:配置http全部跳转至https

server {         
listen  80;        
server_name www.xxx.com;        
rewrite ^(.*)$  https://$http_host$1 permanent; 
}

rewrite例2:配置浏览器输入www.aaa.com,永久跳转到www.bbb.com,后面带着的内容不变:

server {         
listen       80;        
server_name www.aaa.com;         
rewrite ^/(.*) http://www.bbb.com/$1 permanent; 
}

rewrite与location的执行顺序:
1、执行server块的rewrite指令
2、执行location匹配
3、执行选定的location中的rewrite指令

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注