今天再给it.net.cn添加rewrite功能时遇到一个难题。 要把这个地址http://it.net.cn/bb-admin/admin-base.php?page=4& plugin=mass_edit rewrite成这个http://it.net.cn/bb-admin/admin-base.php/page /4?plugin=mass_edit 考虑到通用性我的语句为 rewrite ^/bb-admin/admin-base.php/page/([0-9]+)&plugin=(.*)$ /bb-admin/admin-base.php?page=4&plugin=$2 last; 但是reload nginx后一直在404,于是猜测是正则问题。 之前写的rewrite规则都比较简单,这次多了些特殊符号,“.”、“?”。按照我那破破的C语言水平,我试着添加转义符号“\”,不过依然不起 作用,开始在Google上以多个关键字搜索,终于让我找到方法了。 这个问题apache和nginx可能都存在。 只说解决方法吧。点号可以用反斜杠转义,问号后面的字符串用自带变量处理。最终我的rewrite规则改写为如下即可。 rewrite ^/bb-admin/admin-base\.php/page/([0-9]+)$ /bb-admin/admin-base.php?page=$1&query_string last; (责任编辑:IT) |