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. Centos论坛

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

  2. 中国第一花木网

    收藏了,不错啊

  3. 赋闲公子

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

回复 Centos论坛 取消回复