关于301重定向的说明和教程,实在多不胜数,这里我只是简单记录下自己的感受和设置方法。
刚开始搞的时候,对301重定向的理解是一头雾水, 直到最后设置成功,才算有个比较直观的认识。
其实就是在用新域名替代旧域名这个过渡阶段,让访问旧域名的人能自动转到新域名上。
[题外话:301重定向的作用应该跟域名解析里的URL转发作用是一样,反正我是这么理解的。只不过我国内老域名的URL转发极不稳定,等于没有;国外新域名的URL转发据说又被天朝给墙了……怨念啊! (这段话是我理解错误,详见一楼蓝冰的回复,谢谢指正!)]
显而易见,301重定向的好处就是让只记得你老域名的用户也能转顺利到新域名上,做到不丢用户,不少流量。
再就是尽量不影响搜索引擎的收录,避免重复收录被判为作弊。
我是直接在.htaccess文件中添加以下代码来实现301重定向的,这个方法仅限Linux主机:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^dustbbs.cn [NC]
RewriteRule ^(.*)$ http://qinfei.info/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.dustbbs.cn [NC]
RewriteRule ^(.*)$ http://qinfei.info/$1 [L,R=301]
其中的dustbbs.cn是老域名,qinfei.info是新域名,使用时用你相应的域名替换掉就行了!
– 2009年12月25日补充 –
之前的方法,虽然实现了域名的顺利转向,但是很快就发现一个弊端。
随便访问老域名下的一个链接地址,结果都被转到新域名的首页上了。我想,那些通过搜索引擎找来的朋友,一定很郁闷……当然,我就更郁闷了!
域名301重定向的方法有很多人介绍,但是要把老域名下的所有链接地址转到新域名对应的地址上,这个方法还真不多见,可能这种情况属于个例吧。
要实现老地址对新地址的转发,必须保证主机上的目录结构完全一致!我只换了域名,没换主机,所以这一点不是问题。
我现在是用以下代码替换了以前的所有代码,包括做301之前文件里就有的代码。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{http_host} ^(www.)?dustbbs.cn [NC]
RewriteRule ^(.*)$ http://qinfei.info/$1 [L,R=301]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>