2016-11-17 6 views
0

NGINXの書き換えを行っています。私はこれが存在し、それが何かを取って$ 2として設定していないのであれば一致させたい。NGINX用Regexは、プロファイルURLに書き換えます。

rewrite ^/profile/(([a-zA-Z0-9_-]*-u)|(^\s*$))([0-9]+)$ /profile/$2/ redirect; 

これは正しく動作していませんが、今は/ a-u4 /と一致しますが、/ 4 /と一致させたいと思います。

これは正規表現で可能ですか?

+0

'(^ \ s * $)'は決してマッチしません(文字列の始まりに一致します、0+空白、文字列の終わり - 文字列の中でそのようなパターンに一致することは不可能です) 。 '/ profile/$ 1 /'と置き換えてください。 –

+0

私はそれを調べると、それはあなたが空白にマッチする方法です。 – Iscariot

+0

いいえ、あなたはアンカーを理解していません。 '^'と '$'を削除して、0個以上の空白を '\ s *'にマッチさせます。 –

答えて

0

はい、可能です。私はあなたがこの正規表現は動作します/プロファイル/名前-U000 /または/プロフィール/ 000/

に一致するようにしたいコメントから理解:

^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$ 

これは、(000部分)の数が一致しているものは何でも入れに$ 2に。

rewrite ^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$ /profile/$2/ redirect; 

しかし、それを使用しないでください:完全なルールを作る

!これがリダイレクトサイクルを作成します。しかし、私は必要...

明確化

は、私は、これは私は明確ではないんだとあなたは$ 2へキャプチャしようとしているものを、正確に何をしたいように微調整する必要があるかもしれません理解しています。私に知らせてください、私は私の答えを更新します。キャプチャしたい番号だけの場合は、/ profile/000 /をリダイレクトしたいので、変更する必要はないので、/ profile/Name-u000 /だけをリダイレクトする必要があります。私が何かを逃しているかどうか教えてください。正規表現は/プロフィール/に続く文字列の先頭にマッチ

^/profile/ 

のしくみ

([a-zA-Z0-9_-]+-u)? 

オプション試合1以上の文字、数字、アンダースコアやダッシュ-uが続くと$ 1にそれをキャプチャします。かっこの後の疑問符は、それを任意にするものです。最初の部分(-uの前)は、あなたが望むかもしれないし、望ましくないかもしれないアンダースコアまたはダッシュで開始または終了することさえできることを覚えておいてください。

([0-9]+) 

1つ以上の数字と一致し、$ 2にキャプチャします。

/$ 

文字列の最後にスラッシュを使用してマッチングを完了します。

+0

答えがマークダウンされた理由がわかりません。問題がある場合、フィードバックは高く評価されます。 – SuperDuperApps

関連する問題