2016-04-17 15 views
0

Nginxロケーションブロックでグループキャプチャを実行しようとしていますが、それは私のためには機能しません。Nginxロケーショングループキャプチャ+リライト

私も可能なことをしようとしていますか?

location ~* /(?<cat>cars|trucks|bikes|motorcycle|quads) { 
    rewrite ^/$cat/([0-9]+)(.*)$ /page.php?id=$1 last; 
} 

私が受けていますエラーメッセージは次のとおりです。

"(。*)^/$猫/([0-9] +)$"「一致していない/車/ 120 /新規作成 -

私は、私が掲示しているものよりも多くのカテゴリを持っており、それぞれの特定のカテゴリ名に対して5xの書き換えを書き込まないようにしようとしています。

ご協力いただければ幸いです。

答えて

0

私はこの特定の構文に精通していませんが、他の人の経験に基づいて、使用しているスラッシュをエスケープするだけでよいのでしょうか?

location ~* \/(?<cat>cars|trucks|bikes|motorcycle|quads) { 
    rewrite ^\/$cat\/([0-9]+)(.*)$ /page.php?id=$1 last; 
} 
+0

他の書き換えでスラッシュをエスケープする必要はありませんでした。これは私が構文を取得した場所です:http://nginx.org/en/docs/http/server_names.html#regex_names – Dave

0

私の代わりにこれを行うことによって、問題を解決:

location ~* /(cars|trucks|bikes|motorcycle|quad-bikes) { 
    rewrite ^/([a-zA-Z-]+)/([0-9]+)(.*)$ /page.php?id=$2 last; 
    ... 
    ... 
} 

正規表現([-ZA-Z - ] +)は私に可能なダッシュで(大文字小文字を区別しない)AZの文字を使用することができます私のカテゴリ/ページ名。