URL重写上的nginx regex引擎不';你不支持弯曲的支架吗?

URL重写上的nginx regex引擎不';你不支持弯曲的支架吗?,nginx,nginx-location,nginx-config,Nginx,Nginx Location,Nginx Config,如果我尝试使用小括号,我的nginx配置似乎在语法检查上失败,尽管这意味着nginx使用PECR,并表明小括号在PECR下工作(尽管它确实在括号中说PECR PHP…) 因此,如果我将其放在我的服务器>位置块下: location / { rewrite ^/([0-9]{4})$ /page.php; } 我从nginx的语法检查器中得到以下错误: nginx:[emerg]指令“重写”不以“;”终止/etc/nginx/sites enabled/default:37 nginx:

如果我尝试使用小括号,我的nginx配置似乎在语法检查上失败,尽管这意味着nginx使用PECR,并表明小括号在PECR下工作(尽管它确实在括号中说PECR PHP…)

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

location / {
    rewrite ^/([0-9]{4})$ /page.php;
}
我从nginx的语法检查器中得到以下错误:

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

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

如果我只去掉那弯曲的部分,留下这个:

location / {
    rewrite ^/([0-9])$ /page.php;
}
那么一切都好了:

nginx:配置文件/etc/nginx/nginx.conf语法正常

nginx:configuration file/etc/nginx/nginx.conf测试成功

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

来自for
rewrite

如果正则表达式包含“}”或“;”字符,则整个 表达式应该用单引号或双引号括起来

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

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

例如:

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

很好的发现,谢谢!为什么不把它作为一个答案,这样我就可以接受这个解决方案了?