2

IIS7 で URL リライター ルールを記述しようとしています。現在の正規表現は次の^(policy|pricing|contact|gallery)/(.*) とおりです。私の書き換えルールは次のとおりです。/{R:1}.aspx?cat={R:2}

policy/ (この場合はスラッシュのまま、WORKS)

gallery/soccer (スラッシュが提供されていないため、これは機能します)

gallery/soccer/ (最後のスラッシュを削除する必要があります)

gallery/soccer/girls/ (最後のスラッシュを削除する必要があります)

.Net などの言語でこれにどのようにアプローチするかはわかっていますが、IIS で正規表現ルールとして厳密に行う必要があります。

4

3 に答える 3

2

これはうまくいくかもしれません

^(policy|pricing|contact|gallery)/([^/]*(?:/[^/]+)*)
于 2012-04-23T17:17:04.720 に答える
1

私は以下がうまくいくはずだと思います:

^(policy|pricing|contact|gallery)/(.*?)/?$

/?最後の は「1/回または 0 回一致する」ことを意味します。つまり、オプションです。これを末尾に追加するだけでは機能しません。これは、 a/が によって引き続き消費されるため.*です。.*.*?

アンカーは$試合が早く終わらないようにするために必要です。

末尾/は依然として一致の一部ですが、2 番目のキャプチャ グループの一部ではないため、書き換えルールが適切に機能することに注意してください。

動作を確認してください: http://www.rubular.com/r/s8IqIlaqoz

于 2012-04-23T16:39:47.900 に答える
0

明示的に最後に置くと(そうしていない/ように見えるのでエスケープしていません)、そのグループを含めないことで、書き換えで効果的に削除できると思います。

^(policy|pricing|contact|gallery)/(.*)/?$

追加$することで、最後のスラッシュのみが削除されるようにします。その間にn 個のスラッシュが存在する可能性があります。

于 2012-04-23T16:40:16.453 に答える