301跳转是站点页面的永久性移走,通常被称为301跳转或者是301重定向。指的就是你点击一个网址的时候通过技术的手段跳转到指定好的域名。301跳转多被用于旧网址在废弃欠转向新网址以保证用户的正常访问,在诸多的服务器中均可以支持这种跳转方法。
什么是302重定向跳转
302重定向又被称之为302代表暂时性转移,也被认为是暂时重定向。一个对网站的浏览器指令来显示浏览器被要求显示的不同的URL,当一个网页经历了短期的URL变化时使用。302重定向是一种由服务器端的重定向,可以被搜索引擎蜘蛛正常的处理。
301重定向和302重定向在SEO以及缓存上是有非常大区别的。
对于SEO也就是搜索引擎优化,一个页面302重定向到另一个页面,新页面的PageRank不会受原页面影响。而一个页面301重定向到另一个页面,原页面的PageRank会被传递到新页面。所以对于一个网站进行域名转换,最好的方法就是使用301重定向,在经过一段时间之后可以不损失PR地将全站转移到新域名下。
1、什么是重定向啊?
就是地址A跳转到地址B啦。百度百科的解释:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。
2、可是,为什么要进行重定向啊?什么时候需要重定向呢?
想跳就跳,就跳的漂亮。还是借鉴百度百科:
1)网站调整(如改变网页目录结构);
2)网页被移到一个新地址;
3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。
3、那么,什么时候进行301或者302跳转呢?
当一个网站或者网页24—48小时内临时移动到一个新的位置,这时候就要进行302跳转,打个比方说,我有一套房子,但是最近走亲戚去亲戚家住了,过两天我还回来的。而使用301跳转的场景就是之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的,就比如你的那套房子其实是租的,现在租期到了,你又在另一个地方找到了房子,之前租的房子不住了。
清晰明确而言:
使用301跳转的场景:
1)域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
2)在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪一个。
3)空间服务器不稳定,换空间的时候。
PHP里的302重定向非常简单,只要在返回的HTTP Response Header里添加Location字段,PHP将自动返回302状态码。例如:
< ?php
header("Location: http://yegle.net/recursion.php");
?>
这段代码将自动重定向到http://yegle.net/recursion.php
而301重定向则稍微有点复杂,需要直接将301状态码用header函数返回给用户。例如:
< ?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://yegle.net/" );
?>
注意的是,跳转不是在收到response
header的时候马上进行,也就是说页面的剩余内容会被下载来之后浏览器才会跳转。新手常犯的一个错误是,在逻辑判断时对符合条件的情况进行header跳转之后,忘了在之后加上exit(),导致错误。例如,用user_login()判断用户是否进行了登录,如果未登录则跳转到登录页面。代码如下:
if(!user_login()){
header("Location:login.php");
}
//display contents for login users.
这里,容易以为header之后这段代码就结束了,没有在header之后使用exit()。后面的代码继续被执行,导致未登录用户看到了已登录用户才能看到的内容。
我自己网站用的http跳转到https的代码,放到conn文件上。
if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off'){
Header("HTTP/1.1 301 Moved Permanently");
header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}