您现在的位置: 365建站网 > 365文章 > header php location实现网站301重定向的方法

header php location实现网站301重定向的方法

文章来源:365jz.com     点击数:688    更新时间:2018-11-06 09:46   参与评论

定义和用法

header() 函数向客户端发送原始的 HTTP 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):


header php location实现网站301重定向的方法:

对于我们SEO人员来说,有的时候需要对网站进行重定向。一般来说,对网站重定向的http返回状态码是301和302两种。下面365建站就通过实例来为你介绍一下怎样通过PHP使用header+Location实现网站301重定向。

关于PHP网站的定向问题,在百度上面搜索的一中午,发现使用最多的就是使用“header+Location”的重定向方法。下面我给出最流行的代码:

<?php
header("Location: https://www.365jz.com");
exit;
?>

但是通过我对HTTP状态码查询发现,通过以上代码跳转重定向后的返回码是302状态。我们先来看一下什么是302返回码?搜索引擎返回302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后 的URL的页面;但是如果页面存在于缓存中,则不重新获取。但是,由于黑帽SEO滥用302重定向进行作弊,302重定向已经被视为垃圾信息,遭到各大搜索引擎的打击。因此,上面的代码返回302状态是不完善的,也是存在被百度等搜索引擎K站的风险的。


请看第二种方法:先返回301状态码后再重定向。 

<?php
header('HTTP/1.1 301 Moved Permanently');
header(”Location: https://www.365jz.com”);
exit;
?>

上面的这一段代码可以说是解决了使用Location产生302状态的问题,因此是比较完善的也是比较安全的网站重定向方法。就在准备收工的时候,我又突然发现了一段跳转代码,也是很不错的,比这个更精简,在这里我也为大家附上,一起分享。

<?php
header("Location: https://www.365jz.com",TRUE,301););
exit;
?>

通过上面的这一行代码就实现的网站的301重定向,并且高效、安全、可靠运行。


header("Location:*****.php")应该注意的几个问题 :

header("Location:")作为php的转向语句。其实在使用中,他有几点需要注意的地方。

 

1、要求header前没有任何输出

但是很多时候在header前我们已经输出了好多东 西了,此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,ob的意思是在服务器端先存储有关输出,等待适当的时机再输出,而 不是像现在这样运行一句,输出一句,发现header语句就只能报错了。

具体的语句有: ob_start(); ob_end_clean();ob_flush();.........

 

2、在header("Location:")后要及时exit

否则他是会继续执行的,虽然在浏览器端你看不到相应的数据出现,但是如果你进行抓包分析的话,你就会看到下面的语句也是在执行的。而且被输送到了浏览器客户端,只不过是没有被浏览器执行为html而已(浏览器执行了header进行了转向操作)。

 

所以,标准的使用方法是

ob_start();

........

if ( something ){

ob_end_clean();

header("Location: yourlocation");

exit;

else{

..........

ob_flush(); //可省略

 

要想在header前有输出的话,可以修改php.ini文件

output_handler =mb_output_handler

或 output_handler =on

 

Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (688人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号