2018 年更新:这篇文章有点久了。新的更换空间网站搬家教程,请参考这篇文章:
提示:如果你是从 Bluehost 虚拟主机搬家到 Linode VPS,请参考这篇文章:
WordPress 网站使用过程中,你可能会遇到因为各种原因而需要更换空间和转移数据。虽然是件很小的事情,但是有时候我们没有考虑周全,往往会在网站搬迁的过程中碰到很多麻烦。别么怎样能完美地把现有的 WordPress 网站更换到新的网站空间呢?
整个过程分为四个部分:
一.原空间数据库的备份
二、备份 WordPress 相关文件
三.新空间数据的导入
四、安装 WordPress 程序
现在分别详细介绍:
一、原空间数据备份
基本上常见的美国主机空间商的网站 Cpanel 面板,都带有 File Manager 和 Mysql 数据库 的 phpMyAdmin 数据库管理的功能。
备份有两种方式可以选择:
1) Phpmyadmin 备份数据库
2) WP 数据库备份插件 WordPress Database Backup 或 BackupWordpress
这里介绍第一种方式 phpmyadmin。
注意备份数据库之前,先记录下来你启用了哪些 wordpress 插件,然后把你的网站所有的插件全部禁用(为了防止意外的插件冲突)。
其次是 Mysql 数据库的备份,这个登陆 phpmyadmin 后,对整个数据库进行导出(注意,你要把数据库从一个空间搬到另一个空间),在导出文件格式那里选择 gzip 压缩,压缩的格式可以在新空间的导入。
在“导出”中选择“自定义”方式,然后注意字符集为 UTF-8,如果支持 gzip 压缩就选择它。如果你的数据不多也可以不选择压缩。其他的不用选择,直接拖到最下面,点击“执行”。
二、备份 WordPress 相关文件
利用 FTP 或者空间的 Cpanel 等管理面板,备份 wordpress 程序文件(网站根目录下的所有文件)。一旦网站的迁移过程中遇到故障,还可以恢复原来的程序文件。
可能你会说我重新安装 WordPress 就好,不过重新安装过后你会发现很多文件都不在了。比如上传到媒体库中的图片,音频,以及插件,你的主题文件等等也没有。
所以还是推荐一定要备份一下原有的 WordPress 网站目录下的文件,至少 wp-content 目录下的 plugins, themes 以及 uploads 这 3 个文件夹直接使用 ftp 或者别的方式下载下来。
因为这些数据可能正是你花很多时间和精力去修改或者丰富的文件。
三、新空间数据还原
在新空间中创建新的数据库,把原空间中做的备份数据库导入到新数据库当中。可以在新空间的 phpMyAdmin 工具中直接上传导入。如果你备份是通过插件备份的,也可以通过插件导入数据库。
四、上传 WordPress 程序
方法有两种:一种是直接 FTP 上传前面备份的 WordPress 程序。另一种方式是安装新的 wordpress 程序,再用原来备份的 wordpress 程序进行 FTP 部分覆盖或上传补充。
推荐通过 FTP 工具上传备份的 WordPress 网站文件。
假如你新空间用了新域名(或者你是从本地调试搬迁到网站空间),还要再进行几步必要的步骤: 1. 进入 WordPress 博客管理后台——“设置”——“常规选项”——站点地址(URL) 写你的新域名。如果你之前在本地建站调试的,需要把本地地址 http://127.0.0.1 改成新域名。当然,这些也可以在 phpMyAdmin 登陆状态下直接从数据库表 WP_Options 里修改。Site_URL 和 Home_URL 修改成新的域名。 2. 你还要在 phpmyAdmin 下,SQL 批量更新数据表中老域名为新域名,否则会出现链接地址仍然为老域名的情况。登陆 phpMyAdmin 的状态下,点击 SQL,输入批量查询替换命令:
UPDATE wp_posts SET post_content = replace(post_content, ‘https://www.old.com’, ‘https://www.new.com’); UPDATE wp_posts SET guid = replace(guid, ‘https://www.old.com’, ‘https://www.new.com’);
注意 old.com 是你的旧域名,new.com 是你的新域名。自行修改好以后,执行 SQL 命令语句。只要没有错误信息提示,就是批量更新成功了。
OK,现在访问你的新空间的网站就会和原来的一模一样了,不需要再重新安装任何东西,包括插件等等。
细节问题:
1. 如果使用的空间带 wordpress 一键安装,如 SiteGround,那么转移起来就可以实现无缝转移。首先使用一键安装把 新的 wordpress 安装好,然后按照以上步骤把网站转移。转移成功之后在域名商后台修改 NS 为新的虚拟主机商的 NS。很多虚拟主机会自动创建解析记录,如 SiteGround。 2. 如果空间不带 wordpress 一键安装,那么在转移过程中你的网站会断开一段时间。如果你的网站访问量大就避开访问高峰再转移。把所有文件上传到新空间对应位置再修改域名 NS。域名解析生效以后立即安装新博客导入数据库,一般导入数据库也不会费时很久,顶多几分钟。注意修改域名的 NS 相当于移交解析权,生效可能需要 1-4 小时,耐心等候。有时候感觉没生效是因为本地电脑上 DNS 有解析缓存,百度一下如何清理本地电脑 DNS 缓存。 3. 如果你原来 wordpress 有些特别的内容存放在原空间的某个目录路径下,在备份的时候也注意 FTP 下载备份转移。务必检查没有遗漏任何重要文件再丢弃原空间数据。 4. 如是采用新域名,则只需要让新域名定向到新的博客主机空间上,而且新域名的解析可以放在 wordpress 迁移的准备阶段进行。
以上即为 wordpress 搬家搬迁的基本过程。
如有更好方法,欢迎补充。
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
该评论为私密评论
“其次把 plugins, themes 以及 uploads 这 3 个文件包下文件夹(或文件)FTP 上传到对应的新的 wordpress 目录下。” 这样的话,以前发的 Post 怎么办 我现在如果全部替换文件,Post 还在,但是 而且奇怪的是,如果在登录了网站后台的浏览器访问新网站主页,就不会进入旧网站。清除了 cookies 也不会 但在别的浏览器无痕模式访问新网站会跳转到旧网站 sql 都替换了,不知道是不是.htaccesss 的问题
@Liaosam 哈哈,SAM 哥不好意思,以后我尽量少评论。 后来自己摸索搞定了。 用控制变量法,发现主要是 数据库密码和信息要和 wp-config.php 匹配。 另外那个跳转,我把 .htaccess 删掉就好了。
料哥,“当然,如果空间支持 ssh 当然你也可以直接转移,更省事。” 这个用 Xshell 能弄吧,没找到相关教程,自己尝试中… 鉴于此,改天能否出个原创教程指点下大伙? 毕竟下载文件到本地然后再上传,麻烦且效率低
@搬瓦工 Luxi 已用 wget 命令搞定,虽然速度不稳定。 用 Xshell 连接新主机,然后用 wget 命令把备份文件从旧主机直接上传到新主机
很不错 厉害 赞一个
试了下 不错 很有用
很不错 效果很好
很有用 很喜欢
赞一个 非常不错
如何把 GODADDY 空间主机搬家到阿里云主机啊 , 阿里云没有 C PANNEL, 好困惑!
@martin 我跟你遇到同样一个问题,不知道是怎么解决的呢?
料神你好,我按照你的方法迁移网站,迁移后 CAPANEL 文件已经搬过去,在新的 CPANEL 里面有所有旧的网站内容,但是我打开新的网站发现,里面什么都没有,这个是什么原因呢?
@料神Sam 料神,我数据库忘了备份了,只上传了旧的 wp-content 文件夹里面的资料。网站显示一片空白,打开 wordpress 媒体库之前在 cpanel 里面的图片也没有显示。这个时候该如何补救?
之前按照建议,采用了 hostease 的空间,3 个月不到,服务器当机了 4 次,而且还经常更换 IP,非常之不方便。不知道其他空间是否也如此?
如何在博客里设置自动回复留言功能啊! //评论回应邮件通知 function comment_mail_notify($comment_id) { $admin_notify = ‘1’; // admin 要不要收回复通知 ( ‘1’=要 ; ‘0’=不要 ) $admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改为你指定的 e-mail. $comment = get_comment($comment_id); $comment_author_email = trim($comment->comment_author_email); $parent_id = $comment->comment_parent ? $comment->comment_parent : ”; global $wpdb; if ($wpdb->query(“Describe {$wpdb->comments} comment_mail_notify”) == ”) $wpdb->query(“ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;”); if (($comment_author_email != $admin_email && isset($_POST[‘comment_mail_notify’])) || ($comment_author_email == $admin_email && $admin_notify == ‘1’)) $wpdb->query(“UPDATE {$wpdb->comments} SET comment_mail_notify=’1′ WHERE comment_ID=’$comment_id'”); $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : ‘0’; $spam_confirmed = $comment->comment_approved; if ($parent_id != ” && $spam_confirmed != ‘spam’ && $notify == ‘1’) { $wp_email = ‘no-reply@’ . preg_replace(‘#^www\.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $to = trim(get_comment($parent_id)->comment_author_email); $subject = ‘Hi,您在 [‘ . get_option(“blogname”) . ‘] 的留言有人回复啦!’; $message = ‘ ‘ . trim(get_comment($parent_id)->comment_author) . ‘, 您好! 您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言: ‘ . trim(get_comment($parent_id)->comment_content) . ‘ ‘ . trim($comment->comment_author) . ‘ 给您的回应: ‘ . trim($comment->comment_content) . ‘ 点击 查看回应完整內容 欢迎再次光临 ‘ . get_option(‘blogname’) . ‘ (此邮件由系统自动发出,请勿回复.) ‘; $from = “From: \”” . get_option(‘blogname’) . “\” “; $headers = “$from\nContent-Type: text/html; charset=” . get_option(‘blog_charset’) . “\n”; wp_mail( $to, $subject, $message, $headers ); //echo ‘mail to ‘, $to, ‘ ‘ , $subject, $message; // for testing } 这个代码已经存在于 functions.php 中,怎么改才能跟料神你的差不多啊,可以邮件自动回复! 还有留言那边显示回复功能,我用的 D8~
试了好久了,不懂。。
如果支持 ssh 其实再简单不过了。网站打包,wget 下载到新服务器,解压;数据库导出,导入。ssh 可以参考水煮鱼的文章。
料神你好. 我有一个方法, 对我我这种没有建站知识的( 只懂得安装各种插件, 不涉及任何编辑代码 ), 有一个插件可以很好的解决这个问题. 步骤一: 下载插件 WP Clone by WP Academy, 并激活 步骤二: 之后进去这个插件, 有一个生成备份的选项. ( 直接点击备份就行了, 然后复制生成的链接 ) 步骤三: 在新的域名或者 hosting, 安装 wordpress>>安装 WP Clone by WP Academy 插件 步骤四: 进入这个插件, 有个恢复备份的选项, 把之前的链接黏贴进去, 点击恢复. 大概过不到 15 秒的时间, 恢复就完成了. 整个过程大概 3 分钟能搞定. 这个方法可以把之前网站的各种模板, 文件等等全部复制过去. 包括后台登陆的账号密码. 我用这个方法前 2 天刚试过, 希望也对大家有帮助.
@料神Sam 感谢料神的肯定.
@xjhwa 我点克隆为啥出现空白呢?请问是什么原因,你们也是这样吗?
@xjhwa 用 wp 数据库备份插件 WordPress Database Backup 备份的。“步骤三: 在新的域名或者 hosting, 安装 wordpress”:这个 host 下面有别的 wp 网站了怎么办?
学习了,很详细实用的指导说明。留着,以后用得上。
OK, got it. it’s kind of hard but really useful. lets try.
关于网站搬家已经倒腾了一个多星期,真是天赐神贴
写的真的很好啊。。。。。
抢个沙发……哈哈……以后可以大胆地把网站搬家了……
@巴比代尔 料神,关注你很久了,一直没说话。今天有个问题向你请教,公司想建一个网站,不知道如何下手,希望你能指导一下,非常感谢!