本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑
302 代表暂时性转移(Temporarily Moved ),是HTTP响应状态码并不是错误。
302是临时重定向的意思,表示被访问页面因为各种需要被临时跳转到其他页面。
在php中,可以利用header()来实现302跳转。
有两种语法格式:
语法格式1:
header('HTTP/1.1 302 Moved Permanently');
header('Location: https://www.php.cn');
语法格式2:
header('Location: https://www.php.cn', true, 302);
额外再提一句,如果要自适应HTTPS/HTTP的话,这样就可以了:
header('Location: //www.php.cn', true, 302);
扩展知识:
HTTP--3xx(重定向)响应状态码
要完成请求,需要进一步操作。通常,这些状态码用来重定向。Google 建议您在每次请求中使用重定向不要超过 5 次。您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。诊断下的网络抓取页列出了由于重定向错误导致 Googlebot 无法抓取的网址。
300(多种选择): 针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301(永久移动): 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。
302(临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 get 和 head 请求的301代码类似,会自动将请求者转到不同的位置,但不应使用此代码来告诉googlebot某个网页或者网站已经移动,因为googlebot会继续抓取原有位置并编制索引。
303(查看其它位置): 请求者应当对不同位置使用单独的 get 请求来检索响应时,服务器返回此代码。对于出head之外的所有请求,服务器会自动转到其它位置;
304(未修改): 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容;如果网页自请求者上次请求后再也没有更改过,应将服务器配置为返回此响应(称为if-modified-Since HTTP标头)。服务器可以告诉 googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。
305(使用代理): 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
307(临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应该继续使用原有位置来响应以后的请求,此代码与响应 get 和 head 请求的<a href=""></a>代码类似,会自动将请求者转到不同的位置,但不应该 告诉googlebot 某个页面或者网站已经移动,因为 googlebot 会继续抓取原有位置并编制索引。
PHP header 的7种用法
跳转页面
header('Location:'.$url); //Location和":"之间无空格。
声明content-type
header('content-type:text/html;charset=utf-8');
返回response状态码
header('HTTP/1.1 404 Not Found');
在某个时间后执行跳转
header('Refresh: 10; url=http://www.php.cn/'); //10s后跳转。
控制浏览器缓存
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
. 执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
执行下载操作
header('Content-Type: application/octet-stream'); //设置内容类型
header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件
header('Content-Transfer-Encoding: binary'); //设置传输方式
header('Content-Length: '.filesize('example.zip')); //设置内容长度