IIS7 301 URL 重写给出 200 状态而不是 301 状态

Posted

技术标签:

【中文标题】IIS7 301 URL 重写给出 200 状态而不是 301 状态【英文标题】:IIS7 301 URL rewrite gives 200 status rather than 301 status 【发布时间】:2012-05-08 06:45:01 【问题描述】:

我正在为一个新的客户站点测试一些 URL 重定向。旧站点是静态 html 站点,新站点是 ASP.NET 站点。我需要将新站点上不再存在的一些旧的“.htm”URL 重定向到等效的新 .aspx 页面。

我在 web.config 文件中添加了一些规则,如下所示:

  <rewrite>
      <rules>
          <rule name="Rule 1">
              <match url="index.htm" />
              <action type="Rewrite" url="/" redirectType="Permanent" />
          </rule>
          <rule name="Rule 2">
              <match url="whatwedo.htm" />
              <action type="Rewrite" url="/about-us.aspx" redirectType="Permanent" />
          </rule>
      </rules>
  </rewrite>

这似乎有效,因为当我在浏览器中加载 URL 时:http://www.myclientsite.com/whatwedo.htm 它确实显示 /about-us.aspx 页面。但是,地址栏 (http://www.myclientsite.com/whatwedo.htm) 中的地址保持不变,这是我没想到的。这让我很好奇,所以我使用了一堆在线“301 重定向检查器”服务以及 Firebug 和 Chrome 开发工具来检查发生了什么,他们似乎都只是说没有发生重定向——他们只是给出 200 状态.htm 页面上的消息。

我很想把这件事做对,因为如果出现问题,会有一些重要的 SEO 影响,所以我想知道是否有人可以确认这是正确的行为,或者它是否以某种方式出错并且没有进行正确的 301 重定向?如果是错误的,我该如何纠正它以执行真正的 301 重定向?

感谢大家的指点!

【问题讨论】:

【参考方案1】:

您可以使用&lt;action type="Redirect" url="..." redirectType="Permanent" /&gt; 来重定向请求而不是重写。

【讨论】:

绝对准确!谢谢克雷格-我没有意识到那里有两种不同的选择(重定向或重写),但现在很有意义。谢谢!!

以上是关于IIS7 301 URL 重写给出 200 状态而不是 301 状态的主要内容,如果未能解决你的问题,请参考以下文章

站点核心 301 重定向 iis 7

遇过的http状态码

IIS7 或 .Net 301 从一个域重定向到另一个域

301重写规则导致SEO警报

在 IIS7 URL 重写模块中,我可以在重定向规则中指定不适用于 http-post 请求吗?

getResponseCode获取URL响应状态码每次都是返回200是啥原因