根据规范,重定向中使用的Location标头需要服务器名称

HTTP/1.1 301 Moved Permanently
...
Location: http://example.com/foo/baz/bar


但是,在2012年,大多数Web浏览器将识别相对路径并将您重定向到使用原始服务器名称的新位置

HTTP/1.1 301 Moved Permanently
...
Location: /foo/baz/bar


使用Location标头中的相对URL是否有负面/令人惊讶的后果?我特别担心的是Google /搜索引擎将如何解释这一点,但是如果有其他任何我不介意的事情,我很乐意听到。

评论

您能否引述您从中获得该要求的确切信息?没有挑战性,我只是没有立即看到它,也不希望阅读整个RFC来找到它。另外,您引用的是HTTP 1.0规范,但在示例中使用了HTTP 1.1标头。 (可能会或可能不会更改允许的内容。)

10.11节。 tools.ietf.org/html/rfc1945#page-44据我所知,在1.1规范中也没有任何东西可以“解决”此问题。

#1 楼

根据当前版本的HTTP / 1.1标准RFC 2616,Location标头的值必须是绝对URI。

但是,在HTTPbis工作组准备最终取代的标准草案中RFC 2616,这也已更改为也允许相对URI,这显然是因为:


“ [RFC 2616]中的Location标头的定义至少在Web的各种方式上有所不同浏览器需要处理它们以与Web上的内容进行互操作”。


实际上,AFAIK几乎所有主要的浏览器和搜索引擎都可以理解并接受对相对URL的HTTP重定向。但是,直到有一天HTTPbis草案成为正式标准并被广泛采用之前,总会有一些新的或晦涩难懂的用户代理对信件实施当前标准,并且仅接受绝对URL。因此,目前安全的做法是,按照Postel法则的建议,仅在Location标头中使用绝对URL:


您接受。“


评论


RFC 2616现在已被7231淘汰,它允许Location标头中的相对URL。因此,对信函执行标准的用户代理现在将接受相对URL

–ZoFreX
17年2月25日在14:05

#2 楼

HTTP 1.1 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30的第14.30节没有明显不同。我不知道您会对此有任何实际的实际限制。

我唯一一次甚至看到过有关此问题的警告是我以前在Lynx中进行测试时,位置不是绝对的,它会警告您“位置值不是绝对的”-但是,如果我没记错的话,它仍然会让您转到新位置。我刚刚测试了Lynx 2.8.7,看来它不再这样做了,尽管这可能是配置问题。

现在,您说:


我特别担心的是Google /搜索引擎将如何解释
,但是如果还有其他问题,我不希望我
听到它。


我相信这值得一试。我将设置一个URL,将其放入您站点的xml Sitemap中,并按照您的描述将该URL作为重定向。我认为要做的就是使用Google网站站长工具检查它,看看是否有负面影响。