14

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

4

1 回答 1

33

阅读本文档。尤其:

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

因此,例如该行:

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;

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

于 2013-02-04T12:33:45.193 回答