1

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

http://localhost/myApplication/MySpecialFolder

到:

http://localhost/MySpecialFolder

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

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

^myApplication/MySpecialFolder$

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

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

提前谢谢了!

解决方案:

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

myApplication/MySpecialFolder

^开头没有,结尾也没有$

4

2 回答 2

2

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

要将重写限制在特定域,您必须使用Conditions带有Condition input=的部分{HTTP_HOST}

于 2012-12-05T22:30:52.953 回答
1

除非 IIS 中的正则表达式有根本不同,否则您可能希望在开始时取出锚 ( ^) 以进行匹配。

myApplication/MySpecialFolder$

克拉^告诉它这是字符串的开头,而美元符号$告诉它匹配结尾。正则表达式 likeabc在字符串中的任何位置查找“abc”,^abc匹配以“abc”开头的字符串,匹配以“abc”abc$结尾的字符串,并且^abc$仅当整个字符串为“abc”时才匹配。

于 2012-12-05T22:29:23.060 回答