2010-11-26 19 views
0

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

www.mysite.com/param
www.mysite.com/folder1/
www.mysite.com/folder1/param
www.mysite:私は、次のURLのに合わせたい

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

フォルダと一致させたい場合は末尾にスラッシュ(/)を付けます。それ以外の場合はパラメータです。

Iは、次のリライトルールを設定している:

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

それ三マッチング句有する:{R:1}、{R:2}及び{R 3}。しかし、I入力次のテストURL:

のfolder1/PARAM

Iは、次の応答を得る:

{R:1}空である
{R:2} =のfolder1
{R 3} = PARAM

Iは、次の応答が疑わ:

{R:1} = folder1の
{R:2}が空である。
{R:3} = param

e.e.e. folder1を書き換えパターンの最初の部分にマップします。

私はに書き換えルールをマッピングしたいと思います:つまり最初の可能な句と一致して、私は試合は貪欲であることを取得するために何をしないのです

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

答えて

0

IISでオプションの量指定子( "?")を貪欲にする方法がわかりません。しかし、私はに試してみると、第2のオプション句を最初の句の中に入れて、あいまいなものをにします。

だからではなく、最初の2つのオプションが横並びあなたの元裁判のように持つの:

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

私が提案するこの:

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

は今第2のグループがいる場合にのみ一致させることができます最初に一致した。

+0

これは機能します。私の実際の問題は4つのレベル(問題を具体化する質問で提供された2つだけではない)を持っているので、このステップに行きたくはありませんでしたが、これは良い解決策のようです。 – Gedde