出于某种需要,我们会更改WordPress的域名或者迁移博客的宿主服务器(网站搬家)。给网站更换域名对于搜索引擎来说非常不友好,还会丢失很多访客,请慎重。
有时候为了方便测试,我们会把博客迁移到本地做一个镜像,这时也要用到更换域名的步骤,偷懒的话可以直接修改hosts文件把博客的域名和127.0.0.1这个地址绑定,这样做的后果就是在本地不能访问网络上的博客了,因此用不同的地址就可以保证两个博客可以同时访问。这篇文章就用localhost为例,讲述如何更换WordPress的域名,同时你还能学到把WordPress迁移到本地的基本方法。利用这些知识,你也可以在不同的主机空间上或者VPS之间迁移博客了。有一些插件对博客的服务器和域名环境比较敏感,在用到本文的方法之外可能还需要额外的设置,这里不再详述。
如何迁移WordPress的数据?
WordPress由文件部分和数据库部分组成,只需要分别把这两个部分搬到新的服务器上,再把域名指向到新服务器的IP就行了。文件部分的迁移非常简单,只需要用FTP工具把博客的所有文件下载并上传到新的服务器即可。数据库有两种情况,一种是独立数据库,这种情况下通常使用原来的数据库和数据库服务器,那么比较方便,基本上不需要改数据库连接参数,没什么好说的;另一种情况就是在虚拟主机提供商购买空间时赠送的数据库,这种情况最好将数据迁移到新的空间商的Mysql数据库。
第一步,登录phpmyadmin,找到Wordpress使用的数据库,点击上面的“导出”,选中所有表,如果是多个系统使用一个数据库的情况,那就选中带前缀的数据表,例如默认的“WP_”,其他的设置一般默认即可:
选中“另存为文件”
然后点击“执行”,这时候会出来保存文件的对话框,选择一个位置保存,等待数据下载到本地。一般导出的是.sql格式的文件,也可以选择其他的文件格式。
数据库成功导出以后就可以到新的平台导入了,登录新服务器上的Phpmyadmin,新建或选择一个数据库,通过左侧下拉列表选择进入需要导入数据的库,点击右边上方的Import图标:
弹出一个对话框,点击“导入”,选择刚才导出的文件上传,过一会儿提示导入成功就可以了。
为什么不导出整个数据库而是导出其中的数据表?因为有的空间商只提供一个数据库,因此在导入整个数据库的时候会因为没有权限新建数据库而报错,因此导出数据表是一个比较保险的办法。至此,文件和数据已经迁移完成了,接下来还需要设置域名,配置数据库连接信息。
如何给WordPress博客更换域名?
下面一个步骤开始修改数据库中的域名。如果你同时更换了域名的话,导入数据以后顺便找到“wp_options”表,(修改域名而不更换Sql库可以直接参考这一步)
修改其中的siteurl的值为你的新的域名,包含“http://”,例如我的
修改完毕后保存即可。域名修改完毕以后我们需要登入域名服务商的控制面板,设定该域名的A记录使其指向新的服务器地址。域名配置完成以后可以尝试用新域名访问你的博客了。如果出现了连接错误,请继续往下看。
重新配置数据库连接信息?
数据库的连接信息是在wp-config.php中指定的,我们可以修改其中的内容为你的新的数据库连接信息,如果这样设置还有问题或者跨平台迁移WordPress,建议直接删除wp-config.php文件,然后再访问你的博客。这时系统会提示找不到wp-config.php的文件,问是否创建一个,我们选择“是”,根据向导创建一个新的配置文件,就像刚刚安装WordPress时一样,不过请放心,这个过程并不会危及到数据库中的内容,当成功连接数据库以后WordPress会 提示我们,要重新安装请清空数据库中的内容。不要理他,我们重新输入博客地址访问,已经可以正常登录。
登录博客,检查“常规设置”配置里的博客信息,填写新的域名。
批量替换文章中的附件地址?
WordPress后台的设置里面就可以更改域名,不过单单修改那里是不行的,你会发现文章中的很多指向附件的链接不可用,这是由于WordPress在文章插入附件时使用的是带有域名的绝对URL路径。要彻底解决这个问题我们需要替换掉数据库中的原域名,把所有原来域名的字符串替换成现有的域名。
以将本站域名修改为localhost为例,首先用PhpMyadmin查询整个Wordpress数据库搜索你曾经的域名,例如www.mazhiyuan.com 。你会看到包含搜索结果的数据表和记录数。接下来我们要做的就是批量替换字符串。执行如下SQL语句:
UPDATE wp_posts SET post_content = replace( post_content,’www.mazhiyuan.com’,’localhost’) ;
UPDATE wp_posts SET guid = replace( guid,’www.mazhiyuan.com’,’localhost’) ;
UPDATE wp_posts SET pinged = replace( pinged,’www.mazhiyuan.com’,’localhost’) ;
UPDATE wp_comments SET comment_content = replace(comment_content,’www.mazhiyuan.com’, ‘localhost’) ;
UPDATE wp_comments SET comment_author_url = replace(comment_author_url,’www.mazhiyuan.com’, ‘localhost’) ;
UPDATE wp_options SET option_value = replace( option_value,’www.mazhiyuan.com’,’localhost’) ;
UPDATE wp_postmeta SET meta_value = replace(meta_value,’www.mazhiyuan.com’, ‘localhost’) ;
UPDATE wp_users SET user_url = replace(user_url,’www.mazhiyuan.com’, ‘localhost’) ;
上面的语句把几个表中的www.mazhiyuan.com替换成了localhost。我将博客复制到本地以后执行了这段代码就可以正常了。上面只是个范例,你可以根据自己的数据表的不同做相应修改,目的是替换掉所有域名字符串。这样的操作是无法撤消的,所以操作之前备份好数据。
经过这些步骤以后基本的迁移和域名替换工作也就完成了,接下来还需要检查一下所有的插件是否都能正常工作,尤其是一些对平台、IP地址、域名有依赖性的插件。修改一些插件的配置。最后设置一下固定链接和伪静态等等,至此我们的博客就算搬家、换域名成功了。