??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://chhua.com

http://www.chhua.com
http://chhua.com/index.php

http://www.chhua.com/index.php

……

???很自然的,以上的这些网址形式都指向到了一个网站,如果在搜索引擎中都启用这些形式,那么,网页权重,PR都会分散到这几个网址上,虽然,它们都是一个网站,而这不是我们想要的结果。那么,如何将以上的首页形式都定向到自己想要的网址上呢,比如http://www.chhua.com,从而使得这些分散的网页权重,PR都集中到www.chhua.com上。这里就需要使用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.chhua.com
Response.End
end?if
%>
?
利用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.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.chhua.com?[NC]?????
RewriteRule?^(.*)$?http://chhua.com?/$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://chhua.com?”?);?>??

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://chhua.com?);????
}????
</script>?

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

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: 网站的301重定向方法(含ASP,JS,PHP,ASP/NET) http://www.chhua.com/web-note1881

随机笔记

更多