浏览器如何使用查询字符串缓存 301 重定向

Posted

技术标签:

【中文标题】浏览器如何使用查询字符串缓存 301 重定向【英文标题】:How do browsers cache 301 redirects with query strings 【发布时间】:2013-02-28 12:35:27 【问题描述】:

我希望将 301 重定向到应用程序以获取查询字符串参数的特定值。

例如:

http://www.example.com/page?id=1 → 重定向到新页面 http://www.example.com/page?id=2 → 呈现正常响应

浏览器如何缓存重定向?

具体来说,在访问第一个 URL 后,某些浏览器会开始对 id=2 执行 301 重定向,还是基于完整 URL 的重定向?

【问题讨论】:

【参考方案1】:

浏览器肯定会缓存 301 重定向,因为它是永久重定向。基本上,您是在告诉浏览器永远不要查看原始 URL 并自动转到第二个 URL。任何搜索引擎都会发生同样的事情。如果您打算再次使用该原始 URL,请确保使用临时重定向。

具体来说,访问第一个URL后,会不会有一些浏览器启动 为 id=2 执行 301 重定向,或者是基于 完整的网址?

不,浏览器应该看到每个 URI 的完整,因此page?id=1Page1?Id=2 是不同的 URL,并且 301 重定向仅适用于第一个 url。

请记住,浏览器正在执行重定向并根据其对 HTTP 规范的解释实施自己的规则。如果浏览器中有任何错误,您可能会得到不可预知的结果,但简短的回答是,它们是对不同 url 的不同请求,并且每个请求都有自己的 HTTP 状态代码,因此可以将它们视为单独的页面。

【讨论】:

以上是关于浏览器如何使用查询字符串缓存 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何使Javascript文件301重定向?

如何使开放图形链接与301重定向一起使用

301 通过 .htaccess 将查询字符串重定向到 SEO 友好的 URL

301重定向后如何防止chrome从磁盘缓存中加载index.html

由于浏览器缓存,PHP 标头 301 重定向不起作用

为啥浏览器会为 http://example.com 缓存 301 重定向并将其用于 http://example.com:8080?