URL重写模式以从路径中排除应用程序名称

时间:2012-12-05 22:08:19

标签: regex iis-7 url-rewriting

我第一次尝试使用IIS 7 URL重写功能,而我无法正常使用正则表达式。看起来应该很简单。我需要做的就是重写这样的URL:

http://localhost/myApplication/MySpecialFolder

要:

http://localhost/MySpecialFolder

这可能吗?我希望正则表达式忽略原始URL中“myApplication”之前的所有内容,以便我可以使用“http:// localhost”或“http:// mysite”等。

这是我到目前为止所得到的:

^myApplication/MySpecialFolder$

但是在IIS中使用“测试模式...”功能,它说我的模式不匹配,除非我完全提供“myApplication / MySpecialFolder”。有谁知道我如何更新我的正则表达式,以便忽略“myApplication”之前的所有内容,并将以下网址视为匹配?

http://localhost/myApplication/MySpecialFolder
http://mysite/myApplication/MySpecialFolder

非常感谢提前!

SOLUTION:

我需要将我的正则表达式更改为:

myApplication/MySpecialFolder

开头没有^,最后没有$

2 个答案:

答案 0 :(得分:2)

您的正则表达式是正确的,该模式将与域后第一个斜杠后开始的路径匹配。 因此,只有粗体部分才会用于匹配:http://localhost/ myApplication / MySpecialFolder

要限制重写到特定域,您必须使用Conditions = Condition input

{HTTP_HOST}部分

答案 1 :(得分:1)

除非IIS中的正则表达式有根本的不同,否则您需要在开始时取出锚点(^)以匹配。

myApplication/MySpecialFolder$

克拉^告诉它这是字符串的开头,而美元符号$告诉它匹配结尾。像abc这样的正则表达式在字符串中的任何位置找到“abc”,^abc匹配以“abc”开头的字符串,abc$匹配以“abc”结尾的字符串,以及^abc$ }只在整个字符串为“abc”时匹配。