我应该使用 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 进行站内重定向吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 301 或 303 将 http 重定向到 https