301 跳转被浏览器缓存,怎么办?

先百科一下什么是 301 跳转?

301跳转是指页面永久性移走,通常叫做301跳转,也叫301永久重定向,301跳转多用于旧网址在废弃前转向新网址以保证用户的访问,在诸多服务器中,均支持本跳转方法。

如何实现 301 跳转

简单的 PHP 跳转代码:

header("HTTP/1.1 301 Moved Permanently");
header("Location: https://要跳转的链接/");
exit;

如果是 WordPress 的话,则更简单:

wp_redirect($location, 301);

301 跳转会被浏览器缓存

我们会在一些程序中使用跳转来做一些数据的跟踪统计,但是我在使用当中发现,301 跳转会被浏览器缓存,就是中间的跟踪统计的程序处理过程不会被执行,浏览器直接跳转到目标链接。怎么办呢?

1. 给 301 跳转添加缓存通知头

header("Cache-Control: no-store, no-cache, must-revalidate");
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://要跳转的链接/");
exit;

2. 使用 302 跳转

302 跳转是要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”),由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。

并且只有在指定了 Cache-Control 或 Expires 的情况下,这个响应才是可缓存的。所以 302 跳转只要不指定 Cache-Control 或 Expires,就是不缓存的:

header("HTTP/1.1 302 Found");
header("Location: https://要跳转的链接/");
exit;

©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。