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 
http://www.jb51.net 
http://jb51.net/index.asp 
http://www.jb51.net/index.asp 
……

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

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

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

代码如下:

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

<%  
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.jb51.net"  
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.jb51.net [NC]       
RewriteRule ^(.*)$ http://jb51.net/$1 [L,R=301]

2、Window+IIS主机,在服务器软件的系统管理员配置中设置,方法:

打开Internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”,在对话框中输入目标页面的地址,记得选中“资源的永久重定向”->“应用” 。

3、用PHP/ASP .NET实现301转向(HTML无法做301转向),方法如下:

1)用PHP实现

PHP代码 


代码如下:

<? Header( "HTTP/1.1 301 Moved Permanently" );      
Header( "Location: http://jb51.net" );?>

2)用ASP.NET实现

ASP/Visual Basic代码  


代码如下:

<script runat="server">      
private void Page_Load(object sender, System.EventArgs e)      
{      
Response.Status = "301 Moved Permanently";      
Response.AddHeader("Location","http://jb51.net");      
}      
</script>

经过这些设置后,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: http://www.jb51.net 
Content-Length: 0 
Content-Type: text/html 
Set-Cookie: ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN; path=/ 
Cache-control: private 
Redirect Target: http://www.jb51.net

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

(0)

相关推荐

  • IIS 301重定向与程序代码实现301重定向的差别

    先说一下IIS 301重定向的做法: IIS中301重定向 打开"Internet信息服务",右击你要跳转的文件夹或者文件,在弹出的右键菜单中选择"属性"弹出的对话框中,"目录"选项下找到"连接到资源是的内容来源",选择"重定向到URL",在下面的文本框中输入要跳转到的页面同时,将"客户端将定向到" 下面的复选框 "资源的永久重定向"选上 点击"应用&quo

  • 使用ISAPI_Rewrite做简单实用的301重定向

    但是对于虚拟主机用户来说,301重定向很难,因为虚拟主机提供商一般不会提供这个设置. 但是对于安装了ISAPI Rewrite的空间,那么301重定向就相对来说变得简单了. 下面我们还是以实例来说明正确使用ISAPI Rewrite做301重定向的方法吧. 1.3版的域名重定向: 复制代码 代码如下: # For ISAPI_Rewrite 1.3 重定向域名 #重定向jb51.cn RewriteCond Host: ^jb51.net$ RewriteRule (.*) http://jb5

  • Nginx下301重定向域名的方法小结

    linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下. 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) http://www.bbbbbbbbbbb.com$1 permaaaaaaanent; } 第二种情况:不是访问aaaaaaa站的全部重定向到指定页面 复制代码 代码如下: server { server_naaaa

  • 比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法

    网站更换域名,把旧域名用301指到新域名来. 从iis中设置url永久转向就可以,看上去很容易,用了一会儿才发现,参数都没有带上. 从微软网站上找到如下说明,果然好使:IIS 301重定向设置 通过本次设置IIS的重定向,感觉还是比较方便的.下面就说一下IIS的重定向方法,因为网站改版是面向目录的迁移的,所以不得不了解以下几个微软的IIS定向参数: 我们在设置URL重定向的时候是可以使用带参数形式URL的,因为毕竟经常面对的URL是很多,要是就那么一两个页面301重定向随便怎么整都可以了. 参数

  • 完美解决IIS和APACHE的301重定向(带参数)

    在5月份的时候,因为对一个网站改版,导致大量链接失效,正好5月底GOOGLE PR大更新,这个网站的PR直接从3降低到2,并且收录也急剧下滑,可以说网站的大幅度改版是导致本次PR降低的主要因素,后在GOOGLE的网站管理后台也验证了这个结论,于是赶紧使用JAVASCRIPT进行了404跳转定向,从实际的测试效果来看,GOOGLE对404跳转也是支持的,不会惩罚该网站的权值,可是根据IIS日志分析,感觉BAIDU spider对404的重定向似乎无动于衷,于是近日干脆对原失效的链接重新设置301重

  • asp.net php asp jsp 301重定向的代码(集合)

    1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了.网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向.下面就以我的www.jb51.net为例 1.1 无www域名转移到www域名 复制代码 代码如下: RewriteEngine on

  • linux URL的301重定向代码分析

    所以凡是使用linux的主机,我都会定义个301重定向,以利于SEO.昨天照例把htaccess传到服务器上,没想到传上后网站无法访问,一删除就恢复正常.看了很多遍代码,也没发现什么问题. 干脆就重新学习下URL重写方法.规范化URL描述:在有些web服务器上,一个资源会拥有多个URL.在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用.无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL.解决方案:对所有不规范的URL执行一个外部HTTP重定向,以改变它

  • 解析网站301重定向的实现方法,包括iis,apache,asp,php的方法

    页面永久性移走(301重定向)是一种非常重要的"自动转向"技术. 首先,给一个工具,是来检测服务器头信息的,简单来说就是看看你的站点的301是否成功了.不要小看这个301,如果被做成了302什么的,你的站可能就要让你欢喜让你忧了. 检测地址:http://www.seoconsultants.com/tools/headers.asp#results 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎

  • Asp.Net实现404页面与301重定向的方法

    本文实例讲述了Asp.Net实现404页面与301重定向的方法.分享给大家供大家参考.具体实现方法如下: 从一种程度来讲301重定向与404页面没什么关系为什么我要拿到一起来讲来,因为都很简单实现,所在我就一起介绍一下了. 如何在 asp.net 中设置404页面的方法记录下来. 下边首先看看之前的设置方法,web.config文件中: 复制代码 代码如下: <configuration>     <system.web>         <customErrors mode

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

    什么是301重定向呢? 301重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址.其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等. 为什么要用301转向? 网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等.302转向可能会有URL规范化问题.其它方法都是常用的作弊手法

  • Win2008 r2 iis7/iis7.5系统下HTTP重定向(301重定向)图文方法

    首先了解一下重定向,常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh. 什么情况下需要做301重定向? 如果你想要换域名,可以通过做301重定向来实现搜索引擎上你的网页依然有效和PR及其他数据不变等对搜索引擎友好的效果,保证流量稳定. 如果你有多个主页网址,也就是说访问者可以通过不同的URL到达相同的网页的时候,这种情况也就是PR分散和外链分散的情况,你可以通过做301重定向确定唯一的主页网址,统一URL所有的PR和外链集中. 如果你需要删除网

  • Apache实现禁止中文浏览器访问与301重定向的方法

    部署禁止中文浏览器访问网站 在网站的根目录中的 htaccess 文件中,增加如下语句 ############################################ ## enable rewrites Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP:Accept-Language} ^zh-cn.*$ [NC,OR] RewriteCond %{HTTP:Accept-Language} ^zh.*$ [NC]

  • LNMP系列教程之 设置301重定向的方法

    有些朋友要说了,为什么wordpress不需要设置,因为程序的特殊性,我们在建立博客的时候选择是带有WWW或者不带WWW的,然后另外一个会自动内部重定向. 如果你是其他程序就需要手工设置.具体方法如下: 第一步,在我们VPS中的 /usr/local/nginx/conf/vhost/下,我们会看到自己网站的域名命名的CONF文件,然后可以VI命令修改,也可以用FTP下载到本地修改再传上去: 复制代码 代码如下: server_name www.laozuo.org laozuo.org; if

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

    幸好有301重定向能有效解决这样的问题.正如月光博客这篇文章中说的, 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响.同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响. 关于301重定向的更多内容,大家不妨Google一下.本文只介绍实现方法啦!

  • ASP.NET实现301重定向方法

    <span style="font-family:'宋体';font-size:10.5pt;"></span> 关于百度等搜索引擎对于是否带"www"前缀的域名的识别问题:即搜索引擎会将www.abc.com和abc.com识别为不同的两个域名,这样做的后果就是分散了对网站的关注度,不利于网站的宣传和推广. 仅仅是通过Response.Redirect方法来重定向该连接,虽然可以将连接进行重定向,但是无法解决搜索引擎的识别分散问题的:此问题

  • ngin配置301重定向设置方法和nginx子目录301重定向

    nginx版本为1.1.19. 若域名由a.com转移到了b.com,并对两个域名有所有权,可以: 复制代码 代码如下: server{ server_name a.com;    return 301 $scheme://b.com$request_uri;} 重启服务器,然后看一下成功与否: 复制代码 代码如下: curl -I a.com nginx子目录301重定向设置方法 如我想把www.b.com/bfiles/download/转向到dx1.b.com:81/bfiles/down

  • Windows虚拟主机与VPS如何实现301重定向(asp.net)

    301重定向这么重要,那么如何实现301重定向呢?卢松松在他的<详解301永久重定向实现方法>一文中介绍了多种实现301重定向的方法,但里面的方法对于使用Windows虚拟主机或是Windows VPS的朋友来说,除了单个页面设置重定向可以用上,IIS 服务器实现整站301重定向的方法却无法应用.因为很多的虚拟主机和VPS的提供商不支持用户去做301重定向.本人遇到了这个问题,非常困扰.搜索了很多的资料,或是在论坛.知名SEO博客询问,得到的建议是:虚拟主机通常没办法做301重定向,建议使用独

随机推荐