1

我正在尝试使用 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 变量添加了一个条件......但这与匹配 url 有什么关系?似乎我应该能够省略任何条件,因为我的正则表达式完全符合我的要求。

4

1 回答 1

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 作为输入。”

于 2012-06-13T21:20:34.483 回答