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 に答える