我已经设置了一个简单的规则来重写对我的域的所有请求:
<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="mydomain.com" />
</conditions>
<action type="Rewrite" url="http://mydomain.com/TestImage.jpg" appendQueryString="false" />
</rule>
启用此功能后,每次访问我的域时都会收到404错误。但是,如果我将其更改为重定向规则,一切正常。这里有什么我想念的吗?
提前致谢。
答案 0 :(得分:5)
正如Daniel解释的那样,您无法重写域(除非您将IIS设置为ARR的反向代理)。您只能重写到同一站点上的另一个URL,因此它将被隐式重写为原始请求所在的域。
您的重写规则应为:
<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="mydomain.com" />
</conditions>
<action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" />
</rule>
如果网站未绑定到提供其他内容的其他域名,您可能还会删除该规则的条件并使其更简单:
<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" />
</rule>
重定向适用于您的示例,因为您可以(当然)将客户端重定向到同一域上的URL,但也可以重定向到另一个域上的URL。