URL重写上的nginx regex引擎不支持圆括号?

问题描述 投票:1回答:1

[我的nginx配置似乎在语法检查中失败,即使this answer表示nginx使用PECR,并且this fiddle显示出弯括号在PECR下也可以工作(尽管它确实说PECR)。括号中的PHP ...)。

因此,如果我将其放在服务器下>位置块:

location / {
    rewrite ^/([0-9]{4})$ /page.php;
}

我从Nginx的语法检查器中收到以下错误:

nginx:[emerg]指令“ rewrite”不以“;”终止在/ etc / nginx / sites-enabled / default:37

nginx:配置文件/etc/nginx/nginx.conf测试失败

而且,如果我仅去除弯曲的部分,则将其保留为:

location / {
    rewrite ^/([0-9])$ /page.php;
}

然后一切都很好:

nginx:配置文件/etc/nginx/nginx.conf的语法没问题

nginx:配置文件/etc/nginx/nginx.conf测试成功

那么,这到底是什么问题,如何使我的URL重写器接受URL重写规则中的特定4位数字?

nginx nginx-location nginx-config
1个回答
0
投票
manual pagerewrite

[如果正则表达式包含“}”或“;”人物,整体表达式应该用单引号或双引号引起来。

};字符在Nginx配置文件中具有特殊含义,因此需要通过将表达式用引号引起来保护正则表达式内的使用。

同样适用于在locationifmap指令(以及我可能忘记的任何其他指令)中出现的正则表达式。

例如:

rewrite "^/[0-9]{4}$" /page.php last;

© www.soinside.com 2019 - 2024. All rights reserved.