2024年4月5日发(作者:)
Nginx服务器Rewrite重写规则大全
Nginx Rewrite规则相关指令
Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite
是最关键的指令。一个简单的Nginx Rewrite规则语法如下:
rewrite ^/b/(.*).html /?video=$1 break;
如果加上if语句,示例如下:
if (!-f $request_filename)
{
rewrite ^/img/(.*)$ /site/$host/images/$1 last;
}
Nginx与Apache的Rewrite规则实例对比
简单的Nginx和Apache 重写规则区别不大,基本上能够完全兼容。例如:
Apache Rewrite 规则:
RewriteRule ^/(mianshi|xianjing)/$ /zl/?name=$1 [L]
RewriteRule ^/ceshi/$ /zl/ [L]
RewriteRule ^/(mianshi)_([a-zA-Z]+)/$ /zl/?name=$1_$2 [L]
RewriteRule ^/pingce([0-9]*)/$ /zl/?id=$1 [L]
Nginx Rewrite 规则:
rewrite ^/(mianshi|xianjing)/$ /zl/?name=$1 last;
rewrite ^/ceshi/$ /zl/ last;
rewrite ^/(mianshi)_([a-zA-Z]+)/$ /zl/?name=$1_$2 last;
rewrite ^/pingce([0-9]*)/$ /zl/?id=$1 last;
由以上示例可以看出,Apache的Rewrite规则改为Nginx的Rewrite规则,其实很
简单:Apache的RewriteRule指令换成Nginx的rewrite指令,Apache的[L]标记换成
Nginx的last标记,中间的内容不变。
如果Apache的Rewrite规则改为Nginx的Rewrite规则后,使用nginx -t命令检
查发现配置文件有语法错误,那么可以尝试给条件加上引号。例如一下的
Nginx Rewrite规则会报语法错误:
rewrite ^/([0-9]{5}).html$ /?id=$1 last;
加上引号就正确了:
rewrite “^/([0-9]{5}).html$” /?id=$1 last;
Apache与Nginx的Rewrite规则在URL跳转时有细微的区别:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1712312067a2039361.html
评论列表(0条)