对于一个新手站长来说,当你选定了主域名后,首先要做的就是将另一个域名301重定向至主域名,这样有利于增加首页的权重。当然,301重定向技术还有很多用处,但本文主要阐述相同域名间的301跳转。

什么是301重定向?

其实很简单,当你的页面需要删除或者移动时,如果只是一个简单的跳转,虽然说在功能上实现了网页的重定向,但是这样做是对搜索引擎很不利的。也就是说,搜索引擎看不懂这样的跳转,他只会认为你的网页内容空了,所以必须要通过一个信号来告诉搜索引擎这个地址确实改变了,这个信号的实现就是3××,即以3开头的HTTP状态码(状态码参见 HTTP状态码详解)。

测试方法

了解了301重定向后,下面几个网站可以提供301跳转的检测

实现方法

废话不多说,下面我们探讨一下301重定向的具体实现方法:

linux主机的301重定向

linux主机非常适合wordpress,因为他有一个强大的**.htaccess**文件,当浏览器或搜索引擎spider发送一个页面请求时,Web服务器就会检查**.htaccess**文件,这个文件指明了如何处理页面请求,通过修改他就可以告知搜索引擎某个页面是302转向(临时跳转)还是301重定向(永久性跳转)。

下面的例子的作用是将phpgao.com的请求301重定向至www.phpgao.com

Options +FollowSymLinks
RewriteEngine on
rewritecond %{http_host} ^phpgao.com$ [nc]
rewriterule ^(.*)$ https://blog.phpgao.com/$1 [r=301,nc]
或
RewriteEngine On
RewriteCond %{HTTP_HOST} !^phpgao.com$ [NC]
RewriteRule ^(.*)$ https://blog.phpgao.com/$1 [L,R=301]

windows主机的301重定向

windows主机基本使用的都是IIS服务器,所以需要服务器支持ISAPI_Rewrite,他是类似Apache mod_rewrite功能的第三方Rewrite组件,使用httpd.ini为配置文件,一般空间都是支持的,如果是自己的服务器,那么可能需要你自己安装此组件,所需组件可以在http://www.isapirewrite.com/下载,该组件有免费Lite版本以及商业版,免费版只支持全局的httpd.conf 配置,商业版支持用户自定义httpd.ini文件,支持目录和站点级的类似.htaccess的配置,现在最新版本是3.0。例子如下:

# ISAPI_Rewrite 1.3 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^phpgao\.com$
RewriteRule (.*) http\://www\.phpgao\.com$1 [I,R]

# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^phpgao\.com$
RewriteRule (.*) http\://www\.phpgao\.com$1 [I,RP]

# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^phpgao\.com$
RewriteRule (.*) http\://www\.phpgao\.com$1 [NC,R=301]

配置的区别在于每个配置的结尾     

[I,R] [I,RP] [NC,R=301],他们分别对应1.3 2.0 3.0版本,请注意区分。

注意

如果使用的是IIS服务器ISAPI_Rewrite 1.3 版本,例如本博客,那么你可能已经注意到了,跳转检测后的结果是302重定向,此跳转的意义是临时性的重定向,可能会被搜索引擎判为作弊行为,所以针对此情况不再推荐使用ISAPI_Rewrite(参见http://baike.baidu.com/view/2173220.htm#5),而是使用更直接的办法,那就是通过语言程序的header功能。

header函数

各种网页语言基本都支持header功能,即控制头文件,将301信息写入原始http报头,这样可以轻松实现301重定向。 下面介绍几种常用语言的重定向方法

php

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: https://blog.phpgao.com/"); 
exit(); 
?>

asp

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", https://blog.phpgao.com/ 
%>

jsp

<% 
response.setStatus(301); 
response.setHeader( "Location", "https://blog.phpgao.com/" ); 
response.setHeader( "Connection", "close" ); 
%>

希望通过此篇文章能够让你的网站完美实现301跳转!

老高@phper   本文部分参考:

http://farlee.info/archives/url-forwarding-301-redirect-apache-iis-php-asp-jsp.html http://lusongsong.com/reed/175.html http://baike.baidu.com/view/2173220.htm