2009年7月26日星期日

.htaccess实现单个或多个域名301转向

我换了域名,需要把原来的域名和现在带www的域名都跳转到不带www的域名上。在网上搜索了一下,有很多方法,比如dns的url转发,html跳转,.htaccess等等。实际上第一个和第三个才是真正的301跳转。而托管在门户通的域名是不允许url转发的,所以我就只能考虑用.htaccess了。而多个域名301转向到单个域名,还是花了好大功夫才自己写出来的,网上搜不到。

在网上搜索了一下,所有的教程都是针对一个域名跳转到另外一个域名。使用方法如下:




 
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zsky.org [NC]
RewriteRule ^(.*)$ http://zsky.org/$1 [L,R=301]
RewriteBase /

 

把以上代码加入.htaccess中“<IfModule mod_rewrite.c>”下面。注意如果有重复的,就把原来存在的重复的删掉。boblog用户直接用上面的代码覆盖“<IfModule mod_rewrite.c>”以下,“#New rules since 2.1.0 beta 2”以上的代码即可。注意!不要忘了把www.zsky.org和zsky.org换成你自己的域名!我这里设置的是把www.zsky.org跳转到zsky.org,一定要看清!RewriteCond是说明跳转的条件,而RewriteRule说明跳转的方向。就这个意思。

而我需要的多个域名重定向到zsky.org怎么办呢?我试了好多次,又参考了专门的RewriteCond使用方法,终于自己写出了方法。好像在网上搜不到现成的!好代码不敢独享,告诉大家吧:

PS:FckEditor的插入高级代码功能用不了,关不掉,使页面无法操作,多亏了自动保存!不然以上内容就Bye-bye了!


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zsky.org [OR]
RewriteCond %{HTTP_HOST} ^ltx.net.ru [OR]
RewriteCond %{HTTP_HOST} ^www.ltx.net.ru
RewriteRule ^(.*)$ http://zsky.org/$1 [L,R=301]
RewriteBase /

 



把以上内容按第一种方法保存到.htaccess即可。[OR]就是“或”,如果来路是www.zsky.org或后者或再者,那么就跳转到zsky.org,别忘了更改成你自己的地址!

最后分享一下我的.htaccess:

htaccess.zip