这是Using 301/303/307 redirects for dynamic short urls的后续问题,我会尝试确定在目标网址频繁更改时实施短网址重定向的最佳方法。
虽然看起来301和307重定向都以相同的方式执行,但我关心的问题是301重定向缓存(如文档here所示) - 是避免使用307重定向的最佳方法(I假设307重定向永远不会缓存?),或者显式发送无缓存标头(“Cache-Control:no-cache,must-revalidate”)?
答案 0 :(得分:19)
不要试图避免301缓存。如果您不希望任何用户代理缓存重定向,则只需不使用301重定向。换句话说,301缓存将保留,从语义上讲,它是永久重定向,因此如果您计划更改目标URL,则301不是正确的状态代码。另一方面,307 responses are not cached by default。
答案 1 :(得分:10)
在您需要301重定向带来的行为的情况下,例如更新浏览器书签和更改google bot中的URL,但同时想要跟踪重定向或执行其他类型的功能,您可以始终将缓存控制标头添加到“无缓存”
HTTP/1.0 301 Moved Permanently
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Location: http://example.com
在php中它看起来像这样:
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Location:'.$url, true, 301);