从Apache到Nginx重写规则的大括号({和}).

Hug*_*o H 13 apache rewrite nginx url-rewriting

我有这个规则,成功地处理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;
Run Code Online (Sandbox Code Playgroud)

我得到了:
*重新启动nginx:[emerg]:指令"rewrite"不会被";"终止 在/path/rwrules.nginx:1

如果我从我的重写规则中删除这4行,它就可以了.有什么问题 ?

reg*_*ero 31

阅读此文档.特别:

注意:对于花括号({和}),因为它们在正则表达式和块控件中都使用,为了避免冲突,带有花括号的正则表达式用双引号(或单引号)括起来.

例如,行:

rewrite ^/saison-([0-9]{1})$ /pages.php?cat_page=saison-$1&season=$1 last;
Run Code Online (Sandbox Code Playgroud)

应该:

rewrite "^/saison-([0-9]{1})$" /pages.php?cat_page=saison-$1&season=$1 last;
Run Code Online (Sandbox Code Playgroud)

这应该删除";" 语法错误(对于规则我没有检查它们的功能是否有效).