如果我尝试使用squiggly括号,那么我的nginx配置在语法检查上似乎就失败了,尽管这个答案暗示nginx使用PECR,而这把小提琴显示squiggly括号在PECR下工作(尽管它在括号中确实说PECR .)。
所以,如果我把它放在我的服务器>位置块下面:
location / {
rewrite ^/([0-9]{4})$ /page.php;
}我从nginx的语法检查器得到以下错误:
nginx: emerg指令“重写”不被";“in /etc/nginx/site终止-启用/默认:37 nginx:配置文件/etc/nginx/nginx.conf测试失败
如果我只处理掉这部分,然后把它留在这里:
location / {
rewrite ^/([0-9])$ /page.php;
}那么一切都好了:
nginx:配置文件/etc/nginx/nginx.conf语法正常 配置文件/etc/nginx/nginx.conf测试是成功的
那么,这里到底是什么错误,以及如何让我的URL重写器接受URL重写规则中的具体4位数字呢?
发布于 2020-05-17 14:38:58
来自手册页 for rewrite
如果正则表达式包括“}”或“;”字符,则整个表达式应以单引号或双引号括起来。
}和;字符在Nginx配置文件中有一个特殊的含义,因此正则表达式中的使用需要通过将表达式封装在引号中来保护。
location、if和map指令中出现的正则表达式(以及其他我可能忘记的)也是如此。
例如:
rewrite "^/[0-9]{4}$" /page.php last;https://stackoverflow.com/questions/61846285
复制相似问题