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

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

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

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

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

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

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

【问题讨论】:

    标签: asp.net redirect localization geolocation http-status-code-301


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多