.htaccess实现301网页永久重定向及302临时重定向

        常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh: 301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

       302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

       meta fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

301重定向具体办法

1、设置.htaccess文件(只适用于linux系统,并需要虚拟主机支持)

使访问example.com/的时候就会自动转到www.example.com, 在.htaccess文件里写上以下代码即可。

RewriteEngine on
RewriteCond %{http_host} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

注意:URL标准化的301重定向(以上代码)需要写在其他URL-rewrite代码之前。下面几个具体的例子:

(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]

上面代码可以确保所有来自对domain.com的请求都转向到对 www.domain.com 进行请求。记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件。

(2).重定向olddomain.com到www.newdomain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

(3).重定向olddomain.com 到 newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

2、下面是301网页永久重定向及、网页压缩、400错误页面的一个完整的例子

RewriteEngine on
ErrorDocument 400 http://www.coalmill.com/
ErrorDocument 404 http://www.coalmill.com/
RewriteCond %{HTTP_HOST} ^coalmill.com$ [NC]
RewriteRule ^(.*)$ http://www.coalmill.com/$1 [R=301,L]
RewriteRule cone-crusher/symons-cone-crusher.html cone-crusher/cone-crusher.html [R=301,L]  (单个不带网址 – 前跳后)
RewriteRule http://www.coalmill.com/index.html http://www.coalmill.com [R=301,L]
RewriteRule http://www.coalmill.com/index.php http://www.coalmill.com [R=301,L]
RewriteRule ^/css/(.*.css$|.*.js$) gzip.php?$1 [L]
RewriteRule ^/js/(.*.css$|.*.js$) gzip.php?$1 [L]

3、网站改变域名A改为B,权重传递,粗体部分代码起主要作用

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^A.net [OR]
RewriteCond %{HTTP_HOST} ^www.A.net [NC]
RewriteRule ^(.*)$ http://www.B.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

解释:

RewriteCond %{REQUEST_FILENAME} !-f
如果文件存在,就直接访问文件,不进行下面的RewriteRule

RewriteCond %{REQUEST_FILENAME} !-d
如果目录存在就直接访问目录不进行RewriteRule

同理
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ 如果是这些后缀的文件,就直接访问文件,不进行Rewrite

4、更多的.htaccess 301重定向

.htaccess  换域名,主机不变:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^steach.twbbs.org$ [NC]

RewriteRule ^(.*)$ http://steachs.com/$1 [R=301,L]

.htaccess  换域名,主机也更换:必须旧主机及域名都在有效运作中,.htaccess放在旧主机根目录

RewriteEngine on

RewriteRule (.*) http://steachs.com/$1 [R=301,L]

.htaccess 文件夹定向到根目录:

由http://sth/cat→http://sth  .htaccess放在根目录

RewriteEngine on

RewriteRule ^cat(.*)$ $1 [R=301,L]

.htaccess 子目录定向到另一个文件夹

http://sth/cat1→http://sth/cat2  .htaccess放在根目录

RewriteEngine on

RewriteRule ^cat1(.*)$ /cat2$1 [R=301,L]

5、301重定向检测工具

配置完成后,一定认真检查一下是否正确。Internet有很多类似的Server Header检查工具,如Check Server Headers Tool – HTTP Status Codes Checker。

http://www.seochat.com/seo-tools/redirect-check/
http://www.internetofficer.com/seo-tool/redirect-check/

之前也有一篇《SEO中常用的301永久重定向代码大全》,感兴趣也可看看,差不多,呵呵

网站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绝不会同情任何人即使无心犯下的错误。

3 Replies to “.htaccess实现301网页永久重定向及302临时重定向

发表评论