hao32的个人日志

发现了一个nginx的rewrite小问题

先声明下, 是小水水(kimi)发现的, 偶只是配合一下下

随便找一条nginx的rewrite规则, 例如discuz 6.x用的

rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3 last;

其实这条规则的不对的, 因为nginx的rewrite的后半部分URL实际地址那里应该是不支持正则的, 也就是说转义符是没必要的, 不然就会造成从”\”开始就断了URL重写

上面一条正确的写法应该是:

rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;

3 评论

  1. nginx进行rewrite之后,传给PHP的REQUEST_URI,还是rewrite之前的uri。这点需要注意。
    也就是说,不要使用$_SERVER[‘REQUEST_URI’]!

  2. 你这个好像是 伪静态的规则…

发表评论