重定向就是通过各种的方法将各种网络请求重新定个方向转到自己想要的地方,在网站建设中,需要网页重定向的有:
1.网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还回得到一个404页面错误信息,访问流量白白丧失;
2.注册多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。
这里主要讲讲301永久重定向的具体方法,首先讲一个例子:比如主域名是www.xxxx.com,此外还有诸如xxxx-1.com、 xxxx-2.com、 xxxx-3.com等一些域名。所有这些次级域名都映射到www.xxxx.com,而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点,一个站点又只能对应一个.htaccess文件,显然不可能直接修改.htaccess文件来实现重定向。应该采用了如下步骤:
A.把xxxx-1.com从xxxx.com 上独立出来,让它成为服务器上的一个普通独立网站。
B.为xxxx-1.com创建一个.htaccess文本文件,并在文件中设置重定向代码,再将修改后的.htaccess文件上传给xxxx-1.com所在服务器。
C.把xxxx-2.com、 xxxx-3.com从绑定到xxxx-1.com 。这样一来,这些被绑定的域名使用的都是xxxx-1.com 的.htaccess文件,因而也就意味着它们都被永久性重定向到xxxx.com 上了。好了,下面详细讲讲具体方法:
一、服务器实现301重定向
1.网站服务器响应网页浏览请求的运作流程
用户/搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时,该服务器将:
* 通过域名服务器(DNS)将域名转换为网站的IP地址,然后返回给客户
* 打开一个该IP套接口连接
* 记下通过该套接口的一个HTTP数据流
* 从WEB服务器接收一个响应请求的HTTP数据流。该数据流包含状态码,状态码的值由HTTP协议所决定。这里所说的“HTTP数据流”信息也叫“头信息(Header)”。头信息中包括了日期,服务器类型,通常还会有一条“200 OK”信息。如果一切良好,那么网络服务器就会将“200 OK”信息以及请求页面发送出去。如果网站在这时候已经建立了重定向,那么服务器就会在头信息中包含一个“302 Moved Temporarily”或“301 Moved Permanent”之类的响应信息。搜索引擎会根据服务器头信息中的内容作出决定。
2.IIS服务器实现301重定向
* 打开internet信息服务管理器,在欲重定向的网页或目录上按右键
* 选择“重定向到URL”
* 在“重定向到”输入框中输入要跳转到的目标网页的URL地址
* 选中“资源的永久重定向”(切记)
* 最后点击“应用”
3.Apache服务器实现301重定向
相比较来说,Apache实现起来要比IIS简单多了。在Apache中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301重定向只是其中之一。
redirect permanent /index.php http://www.xxxx.com/index.php?go=category_6(将网页index.php重定向到http://www.xxxx.com/index.php?go=category_6)
通过合理地配置重定向参数中的正则表达式,可以实现更复杂的匹配。有兴趣的朋友可参考本站Apache手册。
二、程序实现实现301重定向
1.PHP下的301重定向
<?
Header( "HTTP/1.1 301 Moved Permanently" ) ;
Header( "Location: http://www.xxxx.com" );
?>
2.ASP下的301重定向
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location",http://www.xxxx.com
%>
3.ASP .NET下的301重定向
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader ("Location",http://www.xxxx.com);
}
</script>
4.ColdFusion下的301重定向
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.xxxx.com"> 旧域名重定向到新域名
创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。
记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.xxxx.com/$1 [R=301,L]
请将上面的www.xxxx.com修改成你想要跳转到的域名。此外,我建议大家归总旧网站的外部链接,并联系相应的站点修改导入链链的URL,以指向新站点。注意:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用。
三、域名301重定向到www的二级域名 (建网站二级域名与一级目不的区别)
1.顺便说一句,www.xxxx.com其实是xxxx.com的二级域名,www.xxxx.com与bbs.xxxx.com是同级别的,国人习惯了www模式而已,所以一般都将www.xxxx.com作为网站首页。搜索引擎会把二级域名当作一个独立的站点来看待,也就是说:www.xxxx.com和bbs.xxxx.com 是两个互相独立的网站。前者的主题内容可能是广泛的,而后者的主题内容是集中于某一个点上(论坛),这些二级域名是相互独立的。而一级目录www.xxxx.com/bbs/就纯粹是上级目录网站www.xxxx.com的一部分了。
2.好了,继续域301跳转到www二级域的实现方式:
创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保所有来自对domain.com的请求都转向到对www.domain.com进行请求。记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件
Options +FollowSymlinks
RewriteEngine on
rewritecond % ^domain.com [nc]
rewriterule ^(.*)$ http://www.xxxx.com/$1 [r=301,nc]
请将上面的domain.com和www.xxxx.com修改成你想要跳转到的域名。
注意:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用。
四、301重定向检测工具
1.配置完成后,一定认真检查一下是否正确。Internet有很多类似的Server Header检查工具,如Check Server Headers Tool - HTTP Status Codes Checker等等。
2.网站302重定向使用不当导致被GOOGLE惩罚
例如:Business.com是网上最大的商业搜索引擎和分类目录,以专业提供商业信息而享负盛名,包括近19万网页。若以“business”为关键词在Google中进行搜索,该网站名列第一。不过在9月5日,Business.com遇到一件蹊跷之事:它的首页由PR8变成了PR0, 而且Google搜索结果中找不到首页。好在被“蒸发”的只是首页,不过庆幸的是第二天首页又回到了Google的搜索结果,但PR仍旧为0。
Business.com的问题出在它的重定向命令上。该网站让business.com跳转到www.business.com,这种重定向本该是永久性的。我们知道,301属于永久性重定向,而302则属于临时性重定向,只有当一个网站或网页在24到48小时之内临时移到其它位置的情况下才能使用该命令。但Business.com却错误地使用了“HTTP/1.1302 Object Moved”状态码。
其实网站重定向极为普遍,譬如不满意原来的域名而申请了一个新域名;买下容易被人错拼的域名,防止客户因为拼错URL而找不到网站,等等。可是,很多人却会由于使用了错误的重定向状态码而遭“灭站之灾”,就象Business.com。尽管他们的重定向理由充分合理,然而若使用不当,则可能被Google误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。Business.com就是最好的前车之鉴。只不过大多数使用错误重定向参数的网站没Business.com这么幸运,一个小小的重定向就可能使网站前功尽弃,只能从头来过:重新申请新域名,重新发布新网站,等等。记住:Google绝不会同情任何人即使无心犯下的错误。
目前Google在302重定向"的处理上还存在一定的问题,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚,它们只是返回了错误的响应。 如果使用了跟踪URL/脚本,又必须让访问者重定向到某一着陆页,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向,而只是把另外一个URL上的内容给复制过来,那么应在robots.txt文件中禁止Spiders去访问跟踪URL,以防因内容重复而遭搜索引擎惩罚。