当前位置: > Linux服务器 > nginx >

正则表达式的问号|nginx rewrite 匹配问号(?)

时间:2016-12-07 22:46来源:linux.it.net.cn 作者:IT
今天再给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)
------分隔线----------------------------
栏目列表
推荐内容