【问题标题】: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 行,它会起作用。 有什么问题?

【问题讨论】:

    标签: apache url-rewriting nginx rewrite


    【解决方案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/…
    • 哦,它修复了一部分,有语法错误,但我仍然坚持我的问​​题。不过,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 2018-05-05
    • 1970-01-01
    • 2014-04-24
    • 2023-03-18
    • 2016-10-13
    • 2014-11-17
    • 2022-11-20
    相关资源
    最近更新 更多