马上就加载好了...
王佳冬中文博客

WordPress域名技巧:绑定多域名、域名更换等

by on Oct 24 , 2011 , under 学术 , 2,021 views , 2 Comments , 网址太长?

由于众所周知的原因,我的博客域名 wjd.name 于去年在大陆地区无法访问,后来又新增了cn.wjd.im这个域名,现在两个域名都指向了一个wordpress博客,但wordpress本身并不支持设置多个域名,还好有其他办法可以实现。

WordPress是基于PHP+MySQL数据库的,所以搬家不像使用Access的mdb数据库那样直接拷贝那么简单,再加上更换域名的话,步骤稍微麻烦一点。

WordPress实现绑定多域名

本方法使用于只有一个空间、只有一个wordpress系统,有多个域名,都想指向该wordpress系统,不用跳转。

编辑根目录下的 wp-config.php 文件,添加以下代码:

$_asdfasdf_myurl = ‘http://’.$_SERVER[‘HTTP_HOST’];
define(‘WP_HOME’, $_asdfasdf_myurl);
define(‘WP_SITEURL’, $_asdfasdf_myurl);
unset($_asdfasdf_myurl);

我们知道,PHP 中的 $_SERVER[‘HTTP_HOST’] 用于获得来路域名。这样,就能根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,实现 WordPress  多域名绑定。为防止域名改变而造成图片不可用,必须在控制面板的“Options–Media”里将“Store uploads in this folder”设为 “wp-content/uploads”。最后,将你想要绑定的域名指向到该系统即可。

警告:wordpress双域名系统不利于SEO,除了跟我一样迫不得已的话,建议大家还是保持一个域名。

WordPress老域名跳转到新域名

如果有多个虚拟主机且想在未来彻底放弃老域名,只留一个最终的域名的话,可以进行301重定向的方式。

例如,重定向wjd.name到cn.wjd.im,打开wjd.name的网站文件夹根目录,找到或者新建.htaccess,文件内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} cn.wjd.im
RewriteRule ^(.*) http://wjd.name/$1 [R]

这样访问wjd.name的时候就会马上重定向到cn.wjd.im,更为重要的是访问wjd.name下面的每一个页面也都会重定向到cn.wjd.im的相对页面,例如:访问http://wjd.name/about 会重定向到http://cn.wjd.im/about,这样不仅有利于SEO,而且不会看到404页面。

WordPress域名主机一起迁移

除了像我上述只增加域名不更换主机的行为之外,还有一些朋友可能域名主机齐搬家,像我认识的一个朋友自从在国外的博客被墙之后,狠心换了域名并且把wordpress转移到了国内的主机,还备了案,真是够折腾的!

  1. 首先,在新的主机上搭建一个新的空白的wordpress。
  2. 利用WP-DBManager将原有Blog系统的数据打包成一个备份文件。对于数据量比较小的人当然可以直接以phpMyAdmin进行备份然后在另一台主机上同样用 phpMyAdmin恢复,我的建议是多种备份方式并行。
  3. 将新域名指向新系统的IP地址,这时候,系统已经可以访问了,登陆后恢复此前保存的数据库。恢复成功后,系统将再次不能访问,因为Wordpress会根据设置自动转向原来设置的域名,即回到老的IP地址。
  4. 在phpMyAdmin中找到wp_options表,将里面siteurl和home的属性都改为新的域名,比如将wjd.name 改为 cn.wjd.in。这时候,若你的新域名指向正确,那么便已经可以访问新架设的系统了。

WordPress批量替换文章内链接

我相信大部分人都跟我有一样的习惯,就是在写博客时会加入一些站内的链接以达到SEO的内部链接效果,但是一旦域名变了之后,文章内的链接是不会改变的,因为这些链接以文本的方式存储在blog内容字段中。还有一种情况就是,博客中的图片将无法显示,必须通过替换地址才能显示。在这里介绍两种批量替换的方式,当然还有很多其他的方式。

插件实现:Blog的帖子之间很多时候会有彼此的链接,当我们更换了域名之后,若旧域名失效,就会导致相关链接失效。所以要批量修改,这里可以启用Search & Replace插件来自动完成这个工作。

指令实现:打开phpMyAdmin,运行sql指令,下面的例子中,都是将老域名wjd.name替换成新域名cn.wjd.im。

更正文章中内部链接及附件的地址:

UPDATE wp_posts SET post_content = replace(post_content, ‘http://wjd.name’, ‘http://cn.wjd.im’);

SQL指令格式:

update 表名 set 要修改字段名 = replace (要修改字段名,’被替换的特定字符’,’替换成的字符’)

更多WordPress使用技巧等你发现!

你可能喜欢的博文:
 

水楼已经盖了 2 层了!

  1. sunny

    Can you place robots:noindex in one of those domains?

赶快说点什么吧! ^_^