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 的问题
尽量 QQ 上说吧。你在这么老的帖子里发问题,我也搞不清楚。
@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.
关于网站搬家已经倒腾了一个多星期,真是天赐神贴
写的真的很好啊。。。。。
抢个沙发……哈哈……以后可以大胆地把网站搬家了……
@巴比代尔 料神,关注你很久了,一直没说话。今天有个问题向你请教,公司想建一个网站,不知道如何下手,希望你能指导一下,非常感谢!