301重定向实现方法,及对网站优化的作用

  什么是301重定向呢?

  301重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等。

  为什么要用301转向?

  网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。何必冒险呢。

  关于301转向和网址规范化问题,大家可以去阅读下ZAC写的文章。本文,仅仅讨论在ASP环境下,如何设置301重定向问题;其他语言亦可参考。

  我们知道,网站的首页一般有以下几种:

  http://jb51.net

  https://www.jb51.net

  http://jb51.net/index.asp

  https://www.jb51.net/index.asp

  ……

  很自然的,以上的这些网址形式都指向到了一个网站,如果在搜索引擎中都启用这些形式,那么,网页权重,PR都会分散到这几个网址上,虽然,它们都是一个网站,而这不是我们想要的结果。那么,如何将以上的首页形式都定向到自己想要的网址上呢,比如https://www.jb51.net,从而使得这些分散的网页权重,PR都集中到www.jb51.net上。这里就需要使用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", "https://www.jb51.net"

  Response.End

  end if

  %>

  这里的代码是经过flymorn加工后的,您也可以根据实际需要对本代码进行适当的修改以适合你需求的样式。本代码自动校验没有输入www的,301跳转到www.jb51.net这个网址上,从而使得网页权重得到累加,达到SEO优化的目的。

  但这里出现一个问题,如果有链接指向到https://www.jb51.net/index.asp(比如站内链接),那么搜索引擎也同样会给这个网址形式加分,虽然index.asp是默认首页,但我们希望的是把所有权重都给与https://www.jb51.net这个形式。有人说,这两个形式不是都一样吗?不一样。比如:https://www.jb51.net的PR为0,而https://www.jb51.net/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传递网址的代码如下:

  复制代码 代码如下:

  

  经过这些设置后,301转向应该可以配置OK啦,如果想检查一下是否正确,则可以使用网上提供Server Header检查工具,如Check Server Headers Tool - HTTP Status Codes Checker。

  用以上检测http状态码工具,可以做个简单的检查,如检查http://jb51.net,返回的结果如下:

  #1 Server Response: http://jb51.net

  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: https://www.jb51.net

  Content-Length: 0

  Content-Type: text/html

  Set-Cookie: ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN; path=/

  Cache-control: private

  Redirect Target: https://www.jb51.net

  #2 Server Response: https://www.jb51.net

  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永久重定向功能了,设置成功。如果您对本文有任何看法,欢迎留下您的评论,以便我们一起探讨。

  您可能感兴趣的文章: