对于一个新手站长来说,当你选定了主域名后,首先要做的就是将另一个域名301重定向至主域名,这样有利于增加首页的权重。当然,301重定向技术还有很多用处,但本文主要阐述相同域名间的301跳转。
什么是301重定向?
其实很简单,当你的页面需要删除或者移动时,如果只是一个简单的跳转,虽然说在功能上实现了网页的重定向,但是这样做是对搜索引擎很不利的。也就是说,搜索引擎看不懂这样的跳转,他只会认为你的网页内容空了,所以必须要通过一个信号来告诉搜索引擎这个地址确实改变了,这个信号的实现就是3××,即以3开头的HTTP状态码(状态码参见 HTTP状态码详解)。
测试方法
了解了301重定向后,下面几个网站可以提供301跳转的检测
- 中文:http://tool.chinaz.com/pagestatus/?url=phpgao.com
- 英文:http://www.seoconsultants.com/tools/check-server-headers-tool/
实现方法
废话不多说,下面我们探讨一下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