花括号( 和 )从 Apache 到 Nginx 重写规则。
Posted
技术标签:
【中文标题】花括号( 和 )从 Apache 到 Nginx 重写规则。【英文标题】:Curly braces ( and ) from Apache to Nginx rewrite rules.花括号( 和 )从 Apache 到 Nginx 重写规则。 【发布时间】:2013-01-19 00:26:09 【问题描述】:我有这个在 apache 上成功运行但返回错误或 nginx 的规则:
rewrite ^/saison-([0-9]1)$ /pages.php?cat_page=saison-$1&season=$1 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)$ /evenements.php?season=$1&title=$2 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)$ /evenements.php?season=$1&title=$2&place=$3&date=$4 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z]+)$ /evenements.php?season=$1&title=$2&place=$3&date=$4&view=$5 last;
我得到了:*重新启动 nginx:[emerg]:指令“rewrite”没有被“;”终止在 /path/rwrules.nginx:1
如果我从重写规则中删除这 4 行,它会起作用。 有什么问题?
【问题讨论】:
【参考方案1】:阅读此documentation。特别是:
注意:对于花括号( 和 ),因为它们同时用于正则表达式和块控制,为避免冲突,带有花括号的正则表达式要用双引号(或单引号)括起来。
例如这条线:
rewrite ^/saison-([0-9]1)$ /pages.php?cat_page=saison-$1&season=$1 last;
应该是:
rewrite "^/saison-([0-9]1)$" /pages.php?cat_page=saison-$1&season=$1 last;
这应该删除“;”语法错误(对于我没有检查它们是否有效的规则)。
【讨论】:
@regilero 你应该回答我刚刚提出的这个 Stack Exchange 问题,因为你的回答在这里为我解决了这个问题。那谢谢啦! serverfault.com/questions/569126/… 哦,它修复了一部分,有语法错误,但我仍然坚持我的问题。不过,谢谢。以上是关于花括号( 和 )从 Apache 到 Nginx 重写规则。的主要内容,如果未能解决你的问题,请参考以下文章