Iis URL重写导致404

Iis URL重写导致404,iis,iis-7,url-rewriting,Iis,Iis 7,Url Rewriting,我设置了一个简单的规则来重写对我的域的所有请求: <rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTT

我设置了一个简单的规则来重写对我的域的所有请求:

<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错误。但是,如果我将其更改为重定向规则,则一切正常。这里有我遗漏的东西吗


提前感谢。

正如Daniel所解释的,您不能重写到域(除非您使用ARR将IIS设置为反向代理)。您只能重写到同一站点上的另一个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。

@DanielA.White谢谢您提供的信息。我已经更新了我的示例,因为在重写到我拥有的另一个域时仍然会出现问题。我能问一下为什么我不能重写到谷歌吗?你不能重写到另一个网站。@DanielA.White我做得不太好,是吗!我已经更新了我的示例,因为这个问题仍然适用。