我有成功在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行,它将起作用。
有什么问题 ?

最佳答案

阅读此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;


这应删除“;”语法错误(对于该规则,我没有检查它们是否有效)。

10-07 18:46