301重定向

转载 2015年11月18日 15:04:53

-
301重定向(也叫301转向,301跳转)对网站优化所起的作用是不可忽视的,尤其是针对SE(搜索引擎)处理网站页面权重的时候,更加显得重要。网站换了新域名,默认首页需要跳转等,从SEO角度来说,我们都建议使用301重定向,而不是JS跳转或META REFRESH或302转向,这些很容易引来SE的惩罚。
什么是301重定向呢?
301重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等。
为什么要用301转向?
网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。何必冒险呢。
关于301转向和网址规范化问题,大家可以去阅读下ZAC写的文章。本文,仅仅讨论在ASP环境下,如何设置301重定向问题;其他语言亦可参考。
我们知道,网站的首页一般有以下几种:
http://piaoyi.org
http://www.piaoyi.org
http://piaoyi.org/index.asp
http://www.piaoyi.org/index.asp
……
很自然的,以上的这些网址形式都指向到了一个网站,如果在搜索引擎中都启用这些形式,那么,网页权重,PR都会分散到这几个网址上,虽然,它们都是一个网站,而这不是我们想要的结果。那么,如何将以上的首页形式都定向到自己想要的网址上呢,比如http://www.piaoyi.org,从而使得这些分散的网页权重,PR都集中到www.piaoyi.org上。这里就需要使用301永久重定向了。
ASP语言下,我们需要在默认首页,如index.asp顶部最上方加入以下代码:
<%
Dim dm,sn
dm=Request.ServerVariables(“Server_name”) ‘获取域名
‘这里的3是指www的长度
if left(dm,3)<>”www” then
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.piaoyi.org
Response.End
end if
%>

这里的代码是经过flymorn加工后的,您也可以根据实际需要对本代码进行适当的修改以适合你需求的样式。本代码自动校验没有输入www的,301跳转到www.piaoyi.org这个网址上,从而使得网页权重得到累加,达到SEO优化的目的。
但这里出现一个问题,如果有链接指向到http://www.piaoyi.org/index.asp(比如站内链接),那么搜索引擎也同样会给这个网址形式加分,虽然index.asp是默认首页,但我们希望的是把所有权重都给与http://www.piaoyi.org这个形式。有人说,这两个形式不是都一样吗?不一样。比如:http://www.023ff.com的PR为0,而http://www.023ff.com/index.asp的PR为2。从这点可以看出,SE是给与是否有index.asp的网址形式以不同的权重的。而使用Request.ServerVariables(“SCRIPT_NAME”)或Request(“url”)获取到的后缀无论输入时是否带有index.asp都一律返回index.asp,从而导致无法判断,也无法使用301重定向,当然这是指仅asp语言环境。
目前解决方法就是,利用js获取当前网址window.location.href,然后把这个当前网址写入cookies;asp读取这个cookies,从而判断网址中是否包含index.asp,如果包含,就使用301重定向。建议:在任何链接中避免有直接指向index.asp的形式,包括外链及内链,尤其是内链。这只是一个折中的方法。针对该问题,希望与各位高手一起讨论。如果您有其他解决的方法,请留下您的评论。
利用js通过cookies给asp传递网址的代码如下:

var url=window.location.href.toLowerCase(); //小写 document.cookie = "urlck" + "=" + escape(url);

<%
Dim sn
sn=request.cookies(“urlck”) ‘获取后缀
response.cookies(“urlck”)=”” ‘清空cookies
if right(sn,11)=”default.asp” then
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.piaoyi.org
Response.End
end if
%>
但是很遗憾,如果这些网址形式不是实际上的人为输入,而是搜索引擎访问的结果,搜索引擎又是忽略JS的,也就是说,js里赋值的cookie并不能被SE识别,从而导致也无法使用301跳转。这个问题有待解决。
其他语言下的301重定向:
1、Unix/Linux+Apache主机,在.htaccess文件中增加301转向指令,采用 mod_rewrite 技术,如:PHP代码
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.piaoyi.org [NC]
RewriteRule ^(.*)http://piaoyi.org/1 [L,R=301]

2、Window+IIS主机,在服务器软件的系统管理员配置中设置,方法:
打开Internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”,在对话框中输入目标页面的地址,记得选中“资源的永久重定向”->“应用” 。
3、用PHP/ASP .NET实现301转向(HTML无法做301转向),方法如下:
1)用PHP实现
PHP代码

1 Server Response: http://023ff.com

HTTP Status Code: HTTP/1.1 301 Moved Permanently
Connection: close
Date: Mon, 25 Feb 2008 01:54:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://www.023ff.com
Content-Length: 0
Content-Type: text/html
Set-Cookie: ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN; path=/
Cache-control: private
Redirect Target: http://www.023ff.com

2 Server Response: http://www.023ff.com

HTTP Status Code: HTTP/1.1 200 OK
Connection: close
Date: Mon, 25 Feb 2008 01:54:13 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 29330
Content-Type: text/html
Set-Cookie: ASPSESSIONIDACBCSBDR=GCJELLLAECPBADKMADAJOBLC; path=/
Cache-control: private
注意以上返回的结果中第二行“HTTP Status Code: HTTP/1.1 301 Moved Permanently”,说明这个网址采用了301永久重定向功能了,设置成功。如果您对本文有任何看法,欢迎留下您的评论。

apache+php完美解决301重定向的两种方法

本文为大家讲解的是apache和php实现301重定向的两种方法,感兴趣的同学参考下。 301重定向真是个好方法啊。前一篇文章Gevin也说过,本博客不幸被换域名了。域名一换,以前辛苦做博客的成...
  • hhkiss1
  • hhkiss1
  • 2015年01月04日 15:46
  • 2951

如何清除浏览器中的301永久重定向

昨天吐槽了一下express的安装,今天我又来吐槽301永久重定向。 由于前几天学习了一下重定向,于是把127.0.0.1:3000给重定向到百度首页上了,完事觉得好神奇啊! 今天我尝试了用e...
  • congweijing
  • congweijing
  • 2017年05月05日 13:41
  • 1304

网站301重定向可以实现的方法

在没有做301重定向之前,我根本不知道301重定向是干嘛用的,后来开始做SEO优化的时候才留意到301重定向的作用。什么是301重定向呢?说白了就是通过各种的方法将各种网络请求重新定个方向转到其它位置...
  • Viyoo08
  • Viyoo08
  • 2014年03月28日 21:32
  • 1125

解析301与302重定向之间的区别

1、什么是301转向?什么是301重定向?   301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的...
  • u013542440
  • u013542440
  • 2016年05月08日 16:53
  • 3629

apache做301重定向的方法

将不带www的定向到带www去http://jingyan.baidu.com/article/59a015e3a2fe05f79488659c.html1这里我使用mod_rewrite重写URL的...
  • forest_fire
  • forest_fire
  • 2016年03月21日 11:01
  • 1773

301重定向与302重定向之间的区别

下面是301与302状态码重定向的区别:     1、302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。     2、301...
  • xlinsist
  • xlinsist
  • 2014年12月17日 21:26
  • 1924

tomcat配置301重定向

tomcat配置301重定向
  • wangxin1982314
  • wangxin1982314
  • 2016年03月01日 10:24
  • 3265

对301重定向到HTTPS前遭遇中间人攻击的分析

由于不能改变用户的输入习惯,很多网站在实现全站HTTPS后,选择通过配置强制301的方式让用户的http请求重定向到https,以保障网站的安全性。然而,在用户发起http请求的时候,仍然存在有中间人...
  • zhuyiquan
  • zhuyiquan
  • 2017年05月23日 21:40
  • 643

Centos服务器下网站做301重定向

点击centoscn.com感觉一下,这就是301功能。      网站301重定向是否受环境限制?     我认为301重定向没有环境限制,只要是一个虚拟主机,无论是linux环境下的php...
  • tomspcc
  • tomspcc
  • 2016年12月12日 17:51
  • 800

IIS7 实现301永久重定向

一个网站,我们绑定了很多个域名,例如有:www.xxx.com、www.xxx.cn、xxx.cn、xxx.com.cn等等,现在我想实现当输入那些域名都跳转到到某一个域名上,例如就是www.xxx....
  • CNYYGJ
  • CNYYGJ
  • 2016年09月12日 14:55
  • 4468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:301重定向
举报原因:
原因补充:

(最多只允许输入30个字)