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重定向
1. windows服务器可以在 IIS 里设置
IIS信息管理器 -- 选择网站 -- 属性 -- 主目录 -- 选重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”
截图如下:
2. linux服务器则修改Apache的配置文件
Apache下301转向代码新建.htaccess文件,输入下列内容(需要开启mod_rewrite):
1)将不带WWW的域名转向到带WWW的域名下Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]
RewriteRule ^(.*)$ /$1 [L,R=301]
2)重定向到新域名Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /$1 [L,R=301]
3)使用正则进行301转向,实现伪静态Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1将news.php?id=123这样的地址转向到news-123.html
4)Apache下vhosts.conf中配置301转向为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:<VirtualHost *:80>
ServerName www.pcbookcn.com
DocumentRoot /home/lesishu
</VirtualHost><VirtualHost *:80>
ServerName lesishu.cn
RedirectMatch permanent ^/(.*) /$1
</VirtualHost>
(二)如果你使用的是虚拟主机, 则可以通过编写代码方式来实现301重定向
1)HTML静态页面下使用JavaScript的301重定向代码
<script language=javascript>
if (document.domain =='yourolddomain')
this.location = "http://yourdomain" + this.location.pathname + this.location.search;
</script>
2)ASP下的301重定向
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","/"
%>
3)PHP用代码实现301重定向的方法
{?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:/");
exit();
?}
4)CGI Perl下的301重定向代码
$q = new CGI;
print $q->redirect("/");
5)JSP下的301转向代码
<%
response.setStatus(301);
response.setHeader( "Location", "/" );
response.setHeader( "Connection", "close" );
%>
6) ASP.Net下的301转向代码
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","/");
}
</script>
7)ColdFusion 301 重定向代码
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="/">