20. 06.

先声明下, 是小水水(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;


作者: hao32 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.hao32.com/unix-linux/53.html

Tags: ,

有2条 对 „发现了一个nginx的rewrite小问题“ 的评论

  1. 赋闲公子 发表评论说:

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

  2. 中国第一花木网 发表评论说:

    收藏了,不错啊

发表评论: