IIS 7 URL重写匹配URL

Vin*_*hak 1 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> 
Run Code Online (Sandbox Code Playgroud)

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

Vin*_*hak 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作为输入."