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转向情况检测
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)