先百科一下什么是 301 跳转?
301跳转是指页面永久性移走,通常叫做301跳转,也叫301永久重定向,301跳转多用于旧网址在废弃前转向新网址以保证用户的访问,在诸多服务器中,均支持本跳转方法。
如何实现 301 跳转
简单的 PHP 跳转代码:
代码语言:javascript复制header("HTTP/1.1 301 Moved Permanently");
header("Location: https://要跳转的链接/");
exit;
如果是 WordPress 的话,则更简单:
代码语言:javascript复制wp_redirect($location, 301);
301 跳转会被浏览器缓存
我们会在一些程序中使用跳转来做一些数据的跟踪统计,但是我在使用当中发现,301 跳转会被浏览器缓存,就是中间的跟踪统计的程序处理过程不会被执行,浏览器直接跳转到目标链接。怎么办呢?
1. 给 301 跳转添加缓存通知头
代码语言:javascript复制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,就是不缓存的:
代码语言:javascript复制header("HTTP/1.1 302 Found");
header("Location: https://要跳转的链接/");
exit;