我应该使用 301 进行站内重定向吗?

Posted

技术标签:

【中文标题】我应该使用 301 进行站内重定向吗?【英文标题】:Should I use 301 for in-site redirects? 【发布时间】:2011-03-16 09:32:58 【问题描述】:

如果检测到 IP 来自某个国家/地区,我们希望重定向到我们的条目网页的本地化版本。我们正在使用 ASP.Net,GeoLite Country Db(在撰写此问题时,它是一个非常小的 1Mb 可下载数据库)。

因此,大多数用户会获得英文内容,但如果他们来自本地,则默认情况下会提供本地内容。当然,他们可以随时更改首选语言。

问题是:如果www.example.com默认显示default.aspx,我们应该(如果我们检测到IP是“本地”的):

    使用"301 Moved Permanently" 并将其重定向到,例如www.example.com/local.aspx

    只需在default.aspx内渲染适当的内容?

我们想知道 SEO 是否有一些副作用或任何方法的类似问题?

【问题讨论】:

【参考方案1】:

这可能不是最好的解决方案。

***上说要使用 300 来表示不同的语言:

http://en.wikipedia.org/wiki/URL_redirection

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1

HTTP 标准定义了几个 重定向状态码:

* 300 multiple choices (e.g. offer different languages)
* 301 moved permanently
* 302 found (originally temporary redirect, but now commonly used to specify redirection for unspecified reason)
* 303 see other (e.g. for results of cgi-scripts)
* 307 temporary redirect

【讨论】:

在文档中它说“如果服务器有首选的表示选择,它应该在 Location 字段中包含该表示的特定 URI;用户代理可以使用 Location 字段值进行自动重定向。除非另有说明,否则此响应是可缓存的。” 但是这种情况下协商不会失败。所以使用 300 是不合适的。 那么 307 呢?在这种情况下,它会比 301 更好吗?【参考方案2】:

我将只提供 local.aspx 的本地化内容,并连同它一起发送一个适当的 Content-Location 指代 local.aspx

或者,如果您想要重定向,请使用状态码 307 来指示临时重定向。

【讨论】:

307 似乎也适合我,但是 HTTP/1.0 代理无法识别它。我可能会渲染它。我应该使用Server.Execute 还是有其他方法? @Groo:在这种情况下,您可以回复 302。

以上是关于我应该使用 301 进行站内重定向吗?的主要内容,如果未能解决你的问题,请参考以下文章

在服务类内重定向?

使用 PHP 进行 301 或 302 重定向

301 使用 IIS 重定向到具有命名锚点的 URL

使用 301 或 303 将 http 重定向到 https

小程序定制开发WEB服务器-设置网站301全站跳转(域名301重定向)

我应该为这个重定向标头 301,谷歌索引将如何受到影响?