当前位置: 主页 > 日志 > 其它 >

nginx url rewrite规则不生效问题的解决

 今天将一个系统从Windows平台迁移到Linux下,但是迁移的url rewrite(Windows平台下用ISAPI_Rewrite做的重写)规则却一直不生效...

 

pbdigg3.0的伪静态规则(ISAPI_Rewrite Rules):

 

RewriteRule ^(.*)/index([0-9]+) $1/index\.php\?p=$2

RewriteRule ^(.*)/category/([0-9]+)(/([0-9]+))?$ $1/category\.php\?cid=$2&p=$4

RewriteRule ^(.*)/user/([0-9]+)(/([0-9]+))?$ $1/user\.php\?uid=$2&p=$4

RewriteRule ^(.*)/show/([0-9]+)(/([0-9]+))?$ $1/show\.php\?tid=$2&p=$4

 

修改为nginx的规则为:

 

location / {

rewrite ^(.*)/index([0-9]+)$ $1/index\.php\?p=$2 last;

rewrite ^(.*)/category/([0-9]+)(/([0-9]+))?$ $1/category\.php\?cid=$2&p=$4 last;

rewrite ^(.*)/user/([0-9]+)(/([0-9]+))?$ $1/user\.php\?uid=$2&p=$4 last;

 rewrite ^(.*)/show/([0-9]+)(/([0-9]+))?$ $1/show\.php\?tid=$2&p=$4 last;

}

 

重启了N遍nginx,就是不生效。

后来在网上看到了一篇文章提到,nginx rewrite规则的后半部分不需要对特殊字符进行转义。

于是就把后半部分的转义去掉:

 

location / {

rewrite ^(.*)/index([0-9]+)$ $1/index.php?p=$2 last;

rewrite ^(.*)/category/([0-9]+)(/([0-9]+))?$ $1/category.php?cid=$2&p=$4 last;

rewrite ^(.*)/user/([0-9]+)(/([0-9]+))?$ $1/user.php?uid=$2&p=$4 last;

rewrite ^(.*)/show/([0-9]+)(/([0-9]+))?$ $1/show.php?tid=$2&p=$4 last;

 }

 

重启后,ok!

 

[日志信息]

该日志于 2011-01-13 21:23 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “nginx url rewrite规则不生效问题的解决” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部