301重定向是目前Chris.DL在对每个客户提供SEO服务时,必定会讲到的东西,过程中,往往会发现大家使用的都是302跳转,虽然最终看到的效果是一样的,但对搜索引擎来讲,301和302还是有区别的。
301的含义是“永久重定向”,而302的含义是“临时重定向”,参考:服务器状态代码含义
那么为什么不能用302呢?下面摘自Zac的一段文章内容
302重定向和网址劫持(URL hijacking)有什么关系呢?这要从搜索引擎如何处理302转向说起。从定义来说,从网址A做一个302重定向到网址B时,主机服务器的隐含意思是网址A随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。
实际上如果搜索引擎在遇到302转向时,百分之百的都抓取目标网址B的话,就不用担心网址URL劫持了。
问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。为什么呢?比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不用户友好。这时Google很有可能会仍然显示网址A。
由于搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL劫持的可能性。也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,出于某种原因, Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,这种情况就叫做网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了。
其实302的跳转本身是没有错的,但因为被一些作弊者用多了,Google当然对这个就比较敏感了,毕竟Google面对的是如此海量的数据,你难道不怕被误杀吗?
Google的官方内容一再强调用301来转移内容,况且,301和302在程序上的设置相差很小,既然如此,何必要冒险用302呢?
ASP下的301转向代码<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.xxx.com”
%>
3、ASP.Net下的301转向代码
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”
Response.AddHeader(”Location”,”http://www.XXX.com“)
}
</script>
4、PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”)
header(”Location: http://www.XXX.com”)
exit()
5、CGI Perl下的301转向代码
$q = new CGI
print $q->redirect(”http://www.new-url.com/”)
6、JSP下的301转向代码
<%
response.setStatus(301)
response.setHeader( “Location”, “http://www.XXX.com/” )
response.setHeader( “Connection”, “close” )
%>
7、Apache下301转向代码
新建.htaccess文件,输入下列内容(需要开启mod_rewrite):
1)将不带WWW的域名转向到带WWW的域名下
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^XXX.com [NC]
RewriteRule ^(.*)$ http://www.XXX.com/$1 [L,R=301]
2)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.XXX.com/$1 [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=123这样的地址转向到news-123.html
8、Apache下vhosts.conf中配置301转向
为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配 置为:
<VirtualHost *:80>
ServerName www.XXX.com
DocumentRoot /home/love07
</VirtualHost>
<VirtualHost *:80>
ServerName XXX.com
RedirectMatch permanent ^/(.*) http://www.XXX.com/$1
</VirtualHost>
Apache下除了以上2种方法,还有其他配置方法和可选参数,建议阅读Apache文档 。
301转向情况检测
页面302跳转是指页面重定向跳转,一般在新老网站改版交替的情况下才会使用到,老网站有的页面对接新网站的时候被删除了或者是不再需要这个页面了,那么seo优化人员为了不让原有的页面权重流失,所以才做的重定向跳转。把老网站的页面指向新网站某些特定页面或者是新网站的首页,让网站的权重传递。页面重定向有两种:1、第一种是301重定向,是指用久的重定向,也就是说以后不再有这类型的页面了,把这个页面的权重传递给其他页面。2、第二种就是302重定向,是指暂时的跳转,也是暂时的把权重传递过来,以后可能还会要用到这个页面的。重定向只是暂时的,一般搜索引擎都会默认为302重定向是带有作弊的嫌疑,使用的时候需要慎重。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)