blog域名迁移之迁移wordpress

申请了WordPress空间并且使用了自己的域名之后,很多人希望将WP里面的文章链接中空间提供的域名更换成自己的域名,这需要对WP数据库进行操作。

以下引自张磊的blog,有详细的说明。并在后面增加了对评论及Pingback链接的修改。

更换域名更多时候是体力活儿,但是用法得当,可以省力不少。所以我打算写几篇文章,写写自己迁移域名(从blogkid.cn到blogkid.net)的全程。先写迁移wordpress。

迁移wordpress主要涉及到3步:

1、数据备份

如果服务器上装有phpmyadmin,可以直接导出一下。使用shell的朋友,可以用如下命令来备份数据:

mysqldump  -u dbuser -pdbpass -h  dbhost  dbname | gzip > backup.sql.gz

把相应位置的dbuser, dbpass, dbhost和dbname替换为数据库用户名、密码、数据库服务器以及要备份的库名。最后得到的backup.sql.gz,就是一份完整备份。

插一句,我把备份的文件解压一看,居然有12M之巨。如果10%是有效内容的话,我这4年已经写了1.2M字节,相当于60万汉字了。

2、配置Web服务器

在这里需要牢记一点:使用301跳转,而不要用默认的302refer)。

配置Web服务器的目的是,将访问原有域名的请求引导到新的域名。301跳转是永久重定向,而302跳转是暂时重定向。前者对搜索引擎更为友好。

以我从blogkid.cn迁移到blogkid.net为例,在nginx中做如下配置:

server {
listen   80;
server_name  blogkid.cn blogkid.net www.blogkid.cn;
rewrite ^/(.*) http://www.blogkid.net/$1 permanent;
}

server{
listen  80;
server_name  www.blogkid.net;
……
}

第一段的配置是将blogkid.cn,blogkid.net以及www.blogkid.cn的请求都重定向到www.blogkid.net 下面。而第二段是用www.blogkid.net替换原有的www.blogkid.cn,其他部分不用改变。注意到在使用rewrite时,加入了 permanent关键字,可以使nginx发送301重定向。

如果使用apache,配置也类似,在rewrite时可加入参数R=301。

保存之后重启web服务器,使配置生效。

3、修改数据库

这也是对wordpress进行迁移的最后一步。需要注意,在完成第二步之后,wordpress会暂时无法打开,原因大家可以自己考虑一下。如果觉得不太好,把这一步提到前面也可以。或者可以先修改好配置文件,等第三步完成了再重启web服务器。

修改数据库主要修改3部分,语句可以在phpmyadmin或者mysql命令行中进行,整理自此处

(1)修改站点地址、主页地址:

UPDATE wp_options SET option_value = replace(option_value, ‘http://olddomain.com’,’http://newdomain.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

(2)修改文章中内部链接以及附件地址:

UPDATE wp_posts SET post_content = replace(post_content,’http://olddomain.com’,’http://newdomain.com’);

(3)更新文章永久链接:

UPDATE wp_posts SET guid = replace(guid, ‘http://olddomain.com’,’http://newdomain.com’);

这三板斧一过,wordpress的迁移已经完成了。之后就从新域名打开网站,看看是否还有什么地方遗漏未能改掉。

BTW,如果原来域名有备案的话,可以在页面底部去掉。更换域名以后,就失效喽。

via:张磊的blog

注:原代码在复制到sql中运行时可能会提示错误,而错误的原因在于原代码使用的单引号不符合要求。所以如果使用时出现了错误,请手动将代码中的单引号重新输入为英文半角单引号再试

另外,根据我的观察,我们通常都会在自己的博客里回复或者引用自己的文章,也就是称之为评论或者Pingback的东西。这些东西里可能也有我们引用留下的内部地址,同样需要修改。类似于上面的3、修改数据库,这些东西存在于2个地方,分别是:

(1)、评论作者地址

UPDATE wp_comments SET comment_author_url = replace(comment_author_url, ‘http://olddomain.com’, ‘http://newdomain.com’);

(2)、评论引用或Pingback地址

UPDATE wp_comments SET comment_content = replace(comment_content, ‘http://olddomain.com’, ‘http://newdomain.com’);

©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/transfer-domain-of-a-blog/>。转载请保留此信息及相应链接。

5 条关于 “blog域名迁移之迁移wordpress” 的评论

  1. 引用通告: 升级到WordPress 3.0多站点模式问题探索 « 不存在的空间

  2. 引用通告: 升级至WordPress 3.0多站点模式 « 不存在的空间

  3. 引用通告: 如何让WordPress 3.0成为多站点模式 | 神经元

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>