2017-04-21 28 views
1

毎回失敗するので、nginxの正しい書き換えを書く方法については疑問に思っていました。動的URLのNGINX書き換えルール

アクション(http://foo.bar/praemienshop/)を使用してアクセスするか、URL内のパラメータを使用してアクションをトリガーするページ(http://foo.bar/praemienshop/1)があります。パラメータは常に数値でなければなりません。可能であれば、パラメーターが指定されていなければ、終了スラッシュをオプションにする必要があります。 これは私がしようと試みたものです。それだけでは見られない404をスローfoo.bar/praemienshop開くことができIamは

location /praemienshop { 
     rewrite ^/praemienshop(|/)([0-9]+/.*?)?$ /index.php?url=praemienshop&item=$1; 
} 

しかし、毎回私はfoo.bar/praemienshop/3(またはその他の数値)を開きます。

私は本当によくregexpを書いているわけでもなく、本当に完全に理解しているわけでもありません。私はそれがIISで働いていたが、それをnginxにインポートするのはどういうわけかかなり難しい。

ありがとうございました。

+0

'$ 1'は最初のキャプチャ'(| /) 'です - あなたは' $ 2'を試すべきです。 –

+0

ご協力ありがとうございます。しかし、これはそれを修正しません。私は数字(例えば:foo.bar/praemienshop/3)を追加するとまだ404を投げます –

答えて

1

あなたが現在持っているとおり、間違ったキャプチャを使用していて、正規表現がURIと一致しません。試してみてください:上記の正規表現で

rewrite ^/praemienshop(?:/([0-9]+))?$ /index.php?url=praemienshop&item=$1; 

を、(?:は非キャプチャグループです。

this useful resource on regular expressionsを参照してください。

+0

ありがとう、これは魅力的でした!私はまだ多くの正規表現について学ぶ必要があります;-) –

+0

私はもう1つの質問リチャード、どのようにユーザーが終わりの.gifのURLを入力すると、.gifが削除され、ファイル名が書き換えられるURLを書き換えることができます上の例のようなパラメータ? –

+0

'^(。*)\。gif $'のような構造体は、URIから拡張子を引いたものを取得します。 –

関連する問題