也说301重定向
->
在前面一篇《关于blog的一些想法》里曾经提到,想把blog从二级目录搬到根目录下,于是今天就动手了,在些先多谢 MR.BIE,经过指导终于把这个事情弄好,把blog从二级目录放到了根目录里了,大家现在看到的就是已经调整后的效果。
现在说说什么是301,以及怎样才能301吧,
第一步、更换域名,第二步、完美301转向,第三步、去Google管理员工具设置首选域名,第四步、301重定向的注意事项,下面分开详细介绍:
第一步、更换域名
为了实现后面的完美301转移,需要建立一个新站,即不更改原站old.com,建立新站new.com。
1.备份导入 备份导出A站数据库,并导入到新站数据库中。建议使用PHPMyAdmin进行数据库备份与导入工作。
2.更换域名 做完第一步工作之后,此时新站尚不能正常访问,还需更改数据库中的域名地址。
方法一:在导入备份的数据库前使用文本编辑器查找替换原域名为新域名,此方法的好处是一步到位,但缺点是数据库乱码,不易编辑修改。
方法二:直接在数据库中进行SQL语句查询。重点推荐此方法,简单快捷。使用查询语句,只需打开数据库,使用下列查询语句即可完成地址及文章内链的修改。(注意,可能复制后半角的’变成全角的‘,实际操作过程中请使用半角’)
UPDATE 表名_options SET option_value = replace(option_value, ‘旧域名(不带/)’, ‘新域名(不带/)’) WHERE option_name = ‘home’ OR option_name = ’siteurl’;
UPDATE 表名_posts SET guid = replace(guid, ‘旧域名(不带/)’, ‘新域名(不带/)’);
UPDATE 表名_posts SET post_content = replace(post_content, ‘旧域名(不带/)’, ‘新域名(不带/)’);
然后直接使用/wp-admin/登录后台,打开设置、常规,如果发现这里还是旧域名,把它该正过来,至此,域名更换完成,可以正常访问新站了。
第二步、完美301转向
假设我们原来的域名为old.com,新鲜出炉爱不释手的域名为new.com,想让所有途径过来的old.com都定向到new.com,那么我们在根目录htaccess中加入如下
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old.com [NC]
RewriteRule ^(.*)$ http://www.new.com/$1 [L,R=301]可能有的同学会问,前面的工作也可以在原站A上完成,但为什么还要建立新站B呢?这就完美转移的关键了,其实只要了解WP的都会发现,WP只能 绑定一个地址,如果你用的是诸如mrbie.com顶域名作为地址,那就不能用www.mrbie.com这个子域作地址,反之亦然。而空间绑定另一个地 址的话,只有首页绑定,内页永久链接是不变的。因此,我们要建立新站,旧站只是提供一个301过渡,这样就形成了一个WP的301完美转移。 前面的更换域名做完之后,操作就相当简单。只需把原站的”.htaccess”文件用文本编辑器打开更改为以下即可(适用于Linux主 机,Windows主机可用其他方式转向)。
做完之后可以301转向测试看一下结果。
第三步、去Google管理员工具设置首选域名
Google的Sitemaps是一个专门为站长设计的工具,关于Sitempas文件的制作,可以使用wordpress插件Google XML Sitemaps来自动或者手动生成,如果是其他程序可以使用在线生成,比如http://www.xml-sitemaps.com/这些网站。
登录Google Sitemaps后,在诊断〉首选域部分有设置。
在互联网的网址规范里面,www.mrbie.com和 mrbie.com是完全不同的两个主机名字,代表了两个网站,可是有些网站的有www和没有www开头的网址其实是指向了相同的内容,这种情况,会被搜 索引擎认为是重复内容而受到处罚,而首选域的功能就是让你可以设定,有www和没有www开头的主机其实是相同的主机,而且用你所习惯的,所首选的网址形 式表达出来。
当然你可以不设置,默认的设置就是两者是不同的网站。
在没有首选域这个设置之前,常规的做法是,把www.mrbie.com指向网站空间,而mrbie.com用301重定向到www.mrbie.com。
现在我只要在GoogleSitemaps里设置首选域为www.mrbie.com就可以了。
这个设置只对Google的搜索引擎有作用,那么如果你想对其他的搜索也能做到相同的功效,就必须使用301重定向了。代码如下:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mrbie.com [NC]
RewriteRule ^(.*)$ http://www.mrbie.com/$1 [L,R=301]第四步、301重定向的注意事项:
1)要避免301重定向后,新页面,或者最终页面是返回的404错误码。
2)301重定向,之前的页面和新页面,内容最好一致,如果不能做到的话,也要尽可能内容相关。
3)301重定向,是用来重定向url的,而不是用来做流量重定向的,这个要非常小心,而且这也是301重定向的基本精神。
4)网站从一个网站迁移到新的域名,用301重定向。
5)放弃一个网站,又重写一个网站,要搬流量,最好不用用301重定向。我的建议是,原来的网站,除首页外,全部给出404错误,在页面上说明情况,并且给出一个链接,让用户自己点击后到达新网站。
6)不要用302重定向,这会让Google认为原来的页面url还有效。
我的转移过程基本上是参照上面的执行的,当成离不开MR.BIE的指导啊,呵呵,
只是在最后写重定向代码的时候出了一点点小问题,
最开始的时候用的是这个代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^a.com/blog [NC,OR]
RewriteCond %{HTTP_HOST} ^www.a.com/blog [NC]
RewriteRule ^(.*)$ http://www.a.comt/$1 [L,R=301]
结果发现从blog目录并不到直接跳转到a.com去,而是莫名其妙的到了一个文章页面了,于是MR.BIE亲自操刀,很轻松的搞定了:
原来把代码改成了这样:
RewriteEngine On
RewriteRule ^(.*)$ http://www.a.com/$1 [L,R=301]
嘿,人别看,效果还真明显,立马就好了,至于原因,这个说实话,我也不清楚啊,
先写这吧,如果你发现有没有定向好的地方,提醒提醒我吧…..






21 Comments on “也说301重定向”
放在根目录 ,看URL就舒服
[回 复]
这种文章一样要保存一份。不过已经有保存了,这个就算了,哈。
[回 复]
这篇文章收藏了,上次我就是直接把目录换掉了,现在PR没了,555…
[回 复]
这个教程是如此的详细,简直是NB!放在
根目录下,大多数人似乎都这样做啊。。。
[回 复]
俺的301用着呢 在。呵呵
[回 复]
@蛋王, 这个确实应该保存一份啊
@平平, 怎么?你也用301???
@365hope, 牛人写的教程当然NB了,哈哈
@小明猪, 我就是怕出现这种情况,所以才咨询了n多牛人,才弄成现在这个样子的……
@卡提拉, 这样看着是比原来舒服多了啊
[回 复]
seo方面的东西不清楚
[回 复]
辛苦了,还在考虑换域名……
[回 复]
说的好详细啊,按照你说的弄弄看
[回 复]
文章介绍的很详细,收藏了
[回 复]
先收藏着,以后用上就方便了
[回 复]
来这ad了,招收链接,哈哈!!
新博客,很惨的。哈哈
[回 复]
总结的太好了,我会用的上的!
[回 复]
太复杂了,幸亏当初没有放在二级目录
[回 复]
哦 已经解决了啊。呵呵 我还在前一篇文章里留言了。
[回 复]
奋飞 回复:
八月 8th, 2009 at 6:29 下午
@chanthon, 呵呵,已经解决了,谢谢了
[回 复]
好麻烦啊!
[回 复]
奋飞 回复:
八月 9th, 2009 at 2:11 下午
@很黄很暴力de生活,
呵呵,还好,还好
[回 复]
小子,想法挺多的!
[回 复]
博客换了域名,pr被清0了
[回 复]
301定向不就是一个重定向语句么?我的就是这么整的,从一个域名直接重定向到另外一个域名。
[回 复]