繁体   English   中英

IIS使URL重写贪婪

[英]IIS make URL Rewrite greedy

我想在IIS 7.5(在Windows Web Server 2008 R2上)中制定通用的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}。 但是,当我输入以下test-URL时:

文件夹1 /参数

我得到以下回应:

{R:1}为空
{R:2} = folder1
{R:3} =参数

我怀疑有以下回应:

{R:1} = folder1
{R:2}为空
{R:3} =参数

即我希望将folder1映射到重写模式的第一部分。

我想将重写规则映射到:

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

我缺少让匹配变得贪婪(即匹配第一个可能的子句)的东西吗?

我不知道如何使IIS中的可选量词(“?”)贪婪。 但我会尝试通过将第二个可选子句在第一个可选子句中来使匹配变得明确

因此,与您最初的试用中并排的前两个选项不同:

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

我建议这样:

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

现在,只有第一个组匹配时,第二个组才能匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM