网站换域名-301永久转向和cname是完全不同的概念

前一段时间,网站换域名。老域名是joke.1or9.com,打算换成www.xiaohuayoumo.com。换域名对网站影响是很大的,能不换是尽量不要换,但是如果一定要换,那一定要把老域名通过301永久转向到新域名上。以前一直用Linux平台和Apache,301永久转向就是通过在目录下放置.htaccess文件来实现的。具体我的例子,就是在joke.1or9.com的网站根目录下放置一个.htaccess文件,内容如下:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?joke\.1or9\.com [NC]
RewriteRule ^(.*)\/rss\/0\.xml$ http://feed.xiaohuayoumo.com [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?joke\.1or9\.com [NC]
RewriteRule ^(.*)$ http://www.xiaohuayoumo.com/$1 [L,R=301]

第1行,和301永久转向没有关系,只是表示目录支持符号链接。第2行是关键,打开mod_rewrite,如果Apache不支持这个,那就不行了。第3第4行是说如果访问joke.1or9.com下面的/rss/0.xml文件,那么这个文件已经永久转向到http://feed.xiaohuayoumo.com。这个是原来的feed源。第5第6行是说如果访问joke.1or9.com下面的其他所有文件,那么这些文件已经永久转向到http://www.xiaohuayoumo.com/下面相应的文件了。

前面几天,把1or9.com这个域名转移到了godaddy。因为那里是Windows+IIS,所以.htaccess文件也就没有用了。开始我以为cname就是301转向,所以在godaddy的DSN上设置了cname,把joke.1or9.com cname成了www.xiaohuayoumo.com,以为万事大捷了。我那个时候已经完全删除了原来空间上joke.1or9.com对应的那个目录,因为整个1or9.com的域名和原来的空间没有任何关系了。

事实发现cname是有问题的。当用户访问joke.1or9.com的时候,访问的服务器的确是www.xiaohuayoumo.com的IP地址,但是地址栏上显示的还是joke.1or9.com。并且在www.xiaohuayoumo.com的服务器上仍须保留joke.1or9.com的Virtual Host,否则就返回404错误。于是苦思如何在godaddy的IIS上解决这个问题,最终都没有成功。

今天突然想到一个很好很简单的方法,一试就成功了。就是把原来放在joke.1or9.com网站根目录下面的那个.htaccess文件(就是上面那几行)原封不动放回去。想想原理其实很简单,用godaddy cname过来,域名还是joke.1or9.com,然后就在301永久转向一次,虽然访问的是同一个服务器上,但是域名变了。而http的头信息也是先得到301,然后在200,和原来的效果一摸一样。

真的挺高兴,写下来分享一下,也做一个备份。

One Reply to “网站换域名-301永久转向和cname是完全不同的概念”

  1. 博主,请教个问题,为什么有人做的cname,然后用http://www.webuildpages.com/seo-tools/header-checker/这个工具查到的也是301状态

Leave a Reply

Your email address will not be published.