我是WordPress的新手并且对平台印象深刻......直到将我的本地MAMP wordpress网站发布到我的生产服务器上时 - 从一台服务器传输网站的方法并不明确,直截了当到另一个。
目的:
将完整的wordpress网站从一个位置转移到另一个位置,同时保留所有媒体,设置和内容。
现有方法限制:
注意:
Codex提供此multi-step solution,但我正在寻找更容易的东西。对于重复传输而言,这是不切实际的,例如在发布方案中。
答案 0 :(得分:4)
没有避免这样做(据我所知)
更新网站设置选项:
UPDATE wp_options SET
option_value = replace(option_value,
'http://oldsite.com/path',
'http://spankingnew.com/otherpath')
WHERE
option_name = 'home'
OR
option_name = 'siteurl';
同时更新帖子内容和帖子/网址:
UPDATE wp_posts SET
post_content = replace(post_content,
'http://oldsite.com/path',
'http://spankingnew.com/otherpath'),
guid = replace(guid,
'http://oldsite.com/path',
'http://spankingnew.com/otherpath');
你应该完成..
当然可能还有其他一些问题,但我已经这样做了几次。
在/wp-config.php中,添加:
define('WP_HOME','http://{my site path}');
define('WP_SITEURL','http://{my site path}');
无论您导入哪些数据,此set-and-forget都会自动更新数据库中的所有url路径。如果您不断地从其他站点导入数据,例如在开发生产发布方案中,它尤其有用。
答案 1 :(得分:2)
我发现一个更简单的方法是在像notepad ++
这样的东西中打开MySQL转储然后执行查找并将http://www.oldsite.com替换为http://www.newsite.com
然后使用PHP MyAdmin导入转储
<强>修订强>
将wordpress网站从一个域移动到另一个域的主要问题之一主要在于存储数据库中设置的任何插件或主题。
通常的搜索和替换方法不起作用,因为某些主题或插件以序列化格式存储数据。
在你的主题插件中说你有一个名为site home的设置: 网站主页:http://oldsite.com&#39;
序列化它将存储在数据库中,如下所示:
{s:9:"site-home";s:18:"http://oldsite.com";}`
注意s:**
序列化数组存储字符串以及字符串中的字符数
所以,如果您按照前面所述进行标准搜索和替换
replacing http://oldsite.com to http://mynewsite.com
现在有20个字符不是18
但是,如上所述的标准搜索和替换只会更新匹配的字符串,字符数不会更新。
序列化数据将更改为{s:9:"url";s:18:"http://mynewsite.com";}
这就是破坏wordpress的原因,因为序列化数组中的数据现在已损坏,因为字符数不再正确。
我认为迁移wordpress网站的最佳工具是互联网上的一些人做的。
它检查序列化数组并更新字符数和标准字符串。
如果您要迁移wordpress网站,这是您应该使用的唯一工具。和它的免费
答案 2 :(得分:1)
可能是迄今为止我发现的最干净的解决方案:http://wordpress.org/extend/plugins/duplicator/
答案 3 :(得分:0)
arnorhs是对的。还有一些我遇到过的事情:
某些主机(如MediaTemple的DV)不允许公共用户写文件,所以如果是这种情况(确保首先出现问题),你会想要/ wp-content / uploads /并确保它是chmod 777(或至少767)。所有子目录也必须相同。
有时我在将大文件导入mysql时遇到了麻烦。一个快捷方式是在文本编辑器中打开导出的sql文件,并将几千行复制到剪贴板,并将它们作为SQL调用粘贴到phpMyAdmin中。奇迹般有效。只需确保在SQL语句结束时结束副本。
答案 4 :(得分:0)
此答案基于arnorhs's以上,这是正确的 - 我只是想指出更简单的方式来更新网站网址:只需将网址设置重新编码为/ wp -config.php。
在/wp-config.php中,添加:
define('WP_HOME','http://{my site path}');
define('WP_SITEURL','http://{my site path}');
无论您导入哪些数据,此set-and-forget都会自动更新数据库中的所有url路径。如果您不断地从其他站点导入数据,例如在开发生产发布方案中,它尤其有用。
(注意:如果您因此遇到服务器错误,则可能需要在管理面板中打开/关闭固定链接以获取要注册的网址路径)
有关详情,请参阅:Wordpress codex: Changing the Site URL
其他一些说明......
如果您尝试将网站内容移动/替换到另一个现有网站,您会:
答案 5 :(得分:0)
是的,WordPress中一个比较可怕的无证错误:(
我写了一个正确解决整个问题的插件 - http://wordpress.org/extend/plugins/root-relative-urls/
基本上它会将你的WordPress安装中的所有链接转换为root-relative(即以“/”开头,它们实际上等同于绝对url。)并且它将从域链接到图像和其他资源,因为它们被添加到TinyMCE编辑器中,因此当您创建新内容时,它也会智能地更改这些链接。
使用此插件,您可以通过IP地址,本地主机或您想要提供的任何别名访问您的开发站点。当您对数据进行数据库转储或者只使用导入/导出实用程序时,您的内容将按照您在生产中的预期工作。
如果您的开发环境与生产环境具有不同的根级别结构,但是您可以使用.htaccess重写规则来处理该边缘情况 - 它仍然无法工作 - 仍然无需执行危险搜索并替换导出的字符串操作sql数据。
它也不适用于子域名多站点安装,但这是一个更大的蠕虫。