IIS 7 URL重写匹配URL

时间:2012-06-12 15:21:20

标签: iis-7 url-rewriting

我正在尝试使用URL Rewrite模块在IIS 7中设置规范的默认URL。我认为我误解了如何使用“匹配URL”字段。以下似乎没有做任何事情:

    <rewrite>
        <rules>
            <rule name="EnforceDefaultPage">
                <match url="^http://(?:www\.)?mydomain\.com(?:/)?(?:blog\.aspx)?$" />
                <action type="Redirect" url="http://www.mydomain.com/blog" appendQueryString="false" />
            </rule>
        </rules>
    </rewrite> 

我在很多例子中都注意到人们已经使用HTTP_HOST变量添加了一个条件......但是这与匹配网址有什么关系呢?似乎我应该能够省略任何条件,因为我的正则表达式完全匹配我想要的。

1 个答案:

答案 0 :(得分:5)

啊,我终于明白了。显然,可用于匹配的“多少”URL取决于目录层次结构中web.config的位置。由于我将代码放在web根目录中的web.config中,它只能匹配域名之后的任何内容(即它可以匹配'http://www.blog.com/'中'blog.com/'之后的所有内容。)

我在这里找到答案:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

“请注意,传递给分布式规则的输入URL字符串始终相对于定义规则的Web.config文件的位置。例如,如果请求是http://www.mysite.com/content/default.aspx?tabid=2&subtabid=3,则重写规则在/ content目录中定义,然后规则将此URL字符串default.aspx作为输入。“