在网站建设中,时常会遇到需要网页重定向的情况:网站调整,改变网页目录结构,网页被移到一个新地址,因应用需要改变网页扩展名,把.php改成.Html或.shtml等,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息(页面不存在),访问流量白白丧失;又或者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。
常用的重定向方式 有: 301 redirect, 302 redirect 与 meta fresh:
301重定向(301 redirect)又叫301代表永久性转移(Permanently Moved),将各种网络请求重新定个方向转到其它位置,是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,如Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎误判为spam而遭到惩罚。
meta fresh: 2000年前比较流行,现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为 spam。
这里我们主要谈谈两种情况下的301重定向方法。
注意:在设置 301 重定向之前务必备份相应目录下的.htaccess文件。
一、域名的重定向。
1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
2.重定向www.domain.com到domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
3.重定向olddomain.com到www.newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]
4.重定向olddomain.com to newdomain.com
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]
5.使用Unix网络服务器的用户,重定向olddomain.com to newdomain.com,也可以使用
Redirect 301 / http://www.newdomain.com/
或者也可以使用
Redirect permanent / http://www.newdomain.com/
二、网页的重定向。这里也可以分为两种情况。
第1种,只有少量网页需要重定向,方法如下:
Redirect permanent aaaa.com/old.html www.aaaa.com/new.html
第2种,重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]
使用Unix网络服务器的用户,网站的导航的一个栏目改了路径时的重定向方法。原路径为/old/,新路径为/news/的情况如下:
Redirect permanent aaaa.com/old/ www.aaaa.com/new/
将网页old.html内容重 定向到http://www.aaaa.com/new-url/
redirect permanent /old.html http://www.aaaa.com/new-url/