【问题标题】:URL rewrite causing 404URL 重写导致 404
【发布时间】:2011-11-27 07:11:04
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • @DanielA.White 感谢您提供信息。我已经更新了我的示例,因为在重写到我拥有的另一个域时问题仍然存在。请问为什么我不能重写到谷歌?
  • 你不能重写到另一个站点。
  • @DanielA.White 我在这里做得不是很好!我再次更新了我的示例,问题仍然存在。

标签: iis iis-7 url-rewriting


【解决方案1】:

正如 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。

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多