nginx 的rewrite和Apache的rewrite规则是有区别的,这儿介绍一下nginx的rewrite规则:
1.if条件规则
1. = 等于 != 不等于
2.使用~ 和~*进行正则表达式的匹配,注意:~匹配大小写,~*不匹配大小写
3.-f和!-f判断文件是否存在
4.-d和!-d判断目录是否存在
5.-e和!-e判断文件或目录是否存在
ex:
if ( !-e $request_filename ) {
rewrite (.*) /index.php
}2.return 规则
结束规则的执行,返回状态码给客户端,状态码可能是:204,400等等。
ex:
if ( $request_uri ~ " " ) {
return 444; //不返回任何header头文件
}3.set
该指令用于定义变量,并赋值
set $name 'hello';
4.rewrite规则
rewrite search_pattern replace_pattern flag
参数flag有last,break,redirect(302临时重定向),permanent(301永久重定向)
last:在本条规则匹配完成后,会对其所在的server{}标签重新发起请求
break:匹配完成后,就终止匹配。
在location的跟中可以使用last,而在location的子目录中,不能使用last,可以使用break,否则会陷入死循环中。
ex:
location /a/ {
rewrite ^/a/(.*)$ /a/index.php break;
}Note:
rewrite 中的规则中有{},要加上“”,避免和nginx的{}冲突
rewrite "^/([0-9]{2})/(.*)$" /$1/$2.png;
本文介绍了Nginx的rewrite规则,包括if条件规则、return规则、set指令及rewrite规则等。详细解释了如何使用这些规则进行URL重写,并提供了具体的配置示例。
1412

被折叠的 条评论
为什么被折叠?



