0

IIS 7.5(Windows Web Server 2008 R2)で汎用URL書き換えルールを作成したいと思います。

次のURLと一致させたい:

www.mysite.com/param
www.mysite.com/folder1/
www.mysite.com/folder1/param
www.mysite.com/folder1/folder2/
www.mysite.com/folder1/folder2/param

フォルダーと一致させたい場合は、末尾のスラッシュ(/)に注意してください。それ以外の場合は、パラメーターです。

次の書き換えルールを設定しました。

^(?:([^/]+)/)?(?:([^/]+)/)?([^/]+)?$

{R:1}、{R:2}、{R:3}の3つの一致する句があります。ただし、次のtest-URLを入力すると:

folder1 / param

次の応答があります。

{R:1}は空です
{R:2} = folder1
{R:3} = param

私は次の応答を疑った:

{R:1} = folder1
{R:2}は空です
{R:3} = param

つまり、folder1をリライトパターンの最初の部分にマップする必要があります。

書き換えルールを次のようにマップしたいと思います。

/controller.php?folder1={R:1}&folder2={R:2}&param={R:3}

マッチを貪欲にする、つまり最初の可能な句にマッチさせるために私は何が欠けていますか?

4

1 に答える 1

0

IIS でオプションの量指定子 ("?") を貪欲にする方法がわかりません。しかし、2 番目の省略可能な句を最初の句で囲むことにより、一致を明確にしようとします。

したがって、元のトライアルのように最初の 2 つのオプションを並べて表示する代わりに、次のようにします。

^(?:([^/]+)/)?(?:([^/]+)/)?([^/]+)?$

私はこれを提案します:

^(?:([^/]+)/(?:([^/]+)/)?)?([^/]+)?$

2 番目のグループは、最初のグループが一致した場合にのみ一致するようになりました。

于 2010-11-26T21:34:29.657 に答える