办法肯定是有的,而且不只一种。前两天和一个博友交流,他说在WP里面就有支持多域名的代码,而且他在 Emlog 上实现过。于是我向他要了这段代码,居然只有2行,于是对那些高手不禁心向往之。
好了,现在谈正题。对于一空间多域名的问题,我目前知道的方法有这么几个:
方法一:
设定一个主域名,然后将其它域名全部交给提供免费域名解析服务的网站来处理(这种网站很多,我用的是 namecheap.com),解析的时候全部用301转到主域名下(包括@和www两条记录)。
这种方法不会影响到主域名的权重,并且只需要在空间绑上主域名就可以了。你甚至可以把你主域名的 www.xxx.com 也用301直接转到 xxx.com (反之亦然),省去修改伪静态规则文件的麻烦。不过这种方法也有不方便的地方,就是以非主域名开头的所有链接,都只能转到主域名的首页。
方法二:
按正常方法解析并绑定所有域名(一般是不带 www 的做 A 记录,带 www 的做 C 记录),然后在伪静态规则文件中加入301转向代码即可。以常见的 Apache 平台为例(其它平台请参考论坛相关资料,本文不作详述),只需在.htaccess 文件中加入如下代码:
代码如下 | 复制代码 |
RewriteCond %{HTTP_HOST} ^www.old.com$ [NC] RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L] |
这样,所有旧域名 www.old.com 的链接都会自动转向新域名 www.new.com (包括后面的链接)。如果还有其它域名要转(比如不带 www 的 old.com),就把上面两句代码再复制一份,修改第一句代码中的域名就行了。
要注意的是,上面两种方法实际上都是将非主域名自动转向主域名,这样有利于主域名的收录和权重。但有些博友可能还是希望能够单独访问非主域名,那就需要使用下面的第三种方法。
方法三:
这个就是上面那个博友的方法了。如同方法二,先按正常方法解析并绑定所有域名,然后在 includeliboption.php 文件最前面的注释语句之后添加2行代码:
代码如下 | 复制代码 |
$siteurl = 'http://'.$_SERVER['HTTP_HOST'].'/'; define('BLOG_URL', $siteurl); |
这样就可以支持多域名了。该博友给我代码的时候说,将博客安装在子目录不能使用上述代码,否则博客将无法正常使用,但经我测试,发现并没有问题。你若将博客安装到网站的 blog 目录下面,则只需将上述代码改为:
代码如下 | 复制代码 |
$siteurl = 'http://'.$_SERVER['HTTP_HOST'].'/blog/'; define('BLOG_URL', $siteurl); |
只要记住,无论安装到哪里,都必须以“/”结尾,否则就真的无法正常使用了。
需要注意的是,用这种方法所有的域名会平分权重,不利于主域名的收录。
方法四:有些 EMER 可能还会申请一些免费空间,然后用一个跳转页面转到主域名,这种方法虽然可行,但并不可取,除了会和主域名平分权重之外,还可能被认为是作弊,影响到主域名的收录。
上面的方法中,我推荐的是方法二,而我自己则是方法二、方法三(只设置带www的转向不带www,或者相反)同时使用。因为在后台修改了伪静态方式之后,.htaccess 文件会自动还原,如果同时使用了方法三,就不会因为丢失 CSS 文件而令页面惨不忍睹。