RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 767561
Accepted
KAGG Design
KAGG Design
Asked:2020-01-07 16:44:12 +0000 UTC2020-01-07 16:44:12 +0000 UTC 2020-01-07 16:44:12 +0000 UTC

如何将网站迁移到 WordPress?

  • 772

将 WordPress 站点从本地计算机移动到服务器(反之亦然)时,该站点停止工作。更改站点可用的域时会发生类似的问题。

无法操作的迹象非常不同——某些页面不显示、媒体文件库中的图片不显示、样式不加载、滑块不工作等等。

这种行为的原因是什么以及如何正确迁移 WordPress 站点或更改其域?

wordpress
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    KAGG Design
    2020-01-07T16:44:12Z2020-01-07T16:44:12Z

    如何转移网站?(TL;DR)

    有必要使用专门为此设计的软件工具。下面提到的程序通过重新计算字符串的长度来正确处理序列化数据。

    对我个人来说,最简单和最自动化的解决方案似乎是Duplicator插件,它获取本地站点的副本,提供 2 个文件供下载:.zip 和 installer.php,必须将其转移到新服务器并运行安装程序。 php 那里。该插件将自动完成其余的工作。在大多数情况下,使用此插件仅传输数据库并通过 FTP 复制文件是有意义的。

    数据库搜索和替换脚本将帮助您正确更改数据库。然而,要做到这一点,用户必须了解他在做什么,例如知道哪些路径在旧站点上,哪些在新站点上。

    WP Migrate DB插件允许您正确准备数据库以进行迁移。要完成该过程,用户必须使用 phpMyAdmin 在新服务器上导入数据库。

    WordPress 命令行界面 (WP-CLI)允许您使用单个命令转换数据库。例如,要转换http://site.ru为https://site.org:

    wp search-replace --url=http://site.ru http://site.ru https://site.org --recurse-objects --report-changed-only --precise --skip-columns=guid --skip-tables=wp_users --skip-plugins --skip-themes
    

    对于多站点,情况稍微复杂一些。Duplicator 和All-in-One WP 迁移插件仅在付费版本中迁移它们。

    我不知道任何免费的多站点迁移插件。如果您想免费进行多站点传输,您可以复制数据库,然后使用数据库搜索和替换。

    迁移问题的原因

    首先,出现问题是因为WordPress 数据库中的所有链接都存储为绝对链接。例如,指向网站图标的链接如下所示:

    http://mysite.com/wp-content/uploads/2017/01/cropped-test-favicon.png
    

    为了使站点在新域(例如https://newsite.org)上正常工作,数据库中的链接必须更改为

    https://newsite.org/wp-content/uploads/2017/01/cropped-test-favicon.png
    

    请注意,即使网站从http到的简单翻译,也https必须更改数据库中的所有链接!

    在 WordPress 中使用绝对链接背后有严重的原因。查看这个StackOverflow答案以获得解释。其中,给出了 WordPress 的主要开发人员之一的意见。使用绝对链接时出现的唯一问题是网站的转移。但是,转移具有相对链接的站点通常会带来更大的问题。提到的答案也讨论了这一点。

    迁移问题的第二个原因是数据库中的序列化数据。所有现代插件(包括 WooCommerce、滑块、各种可视化编辑器,如 Visual Composer)、主题 - 以序列化形式将数据存储在数据库中。这些是字符串压缩的数组和对象。几个例子:

    关于二十七主题的最后编辑文件的信息:

    (39, 'recently_edited', 'a:3:{i:0;s:46:\"/var/www/test/wp-content/themes/test/style.css\";i:2;s:50:\"/var/www/test/wp-content/themes/test/functions.php\";i:3;s:0:\"\";}', 'no'),
    

    喷气背包数据

    (5104, 'jpsq_sync-1494597052.351881-573008-5', 'a:6:{i:0;s:21:\"jetpack_sync_constant\";i:1;a:2:{i:0;s:7:\"ABSPATH\";i:1;s:14:\"/var/www/test/\";}i:2;i:1;i:3;d:1494597052.351856;i:4;b:0;i:5;a:9:{s:12:\"display_name\";s:4:\"kagg\";s:10:\"user_email\";s:12:\"info@kagg.eu\";s:2:\"ip\";s:14:\"87.110.237.209\";s:7:\"is_cron\";b:0;s:11:\"is_wp_admin\";b:1;s:7:\"is_rest\";b:0;s:9:\"is_xmlrpc\";b:0;s:10:\"is_wp_rest\";b:0;s:7:\"is_ajax\";b:0;}}', 'no'),
    

    来自流行的网站备份插件 BackWPUp 的数据

    (5884, 'backwpup_jobs', 'a:1:{i:1;a:32:{s:5:\"jobid\";i:1;s:10:\"backuptype\";s:7:\"archive\";s:4:\"type\";a:3:{i:0;s:6:\"DBDUMP\";i:1;s:4:\"FILE\";i:2;s:8:\"WPPLUGIN\";}s:12:\"destinations\";a:1:{i:0;s:6:\"FOLDER\";}s:4:\"name\";s:15:\"Database backup\";s:14:\"mailaddresslog\";s:12:\"info@kagg.eu\";s:20:\"mailaddresssenderlog\";s:28:\"BackWPup test <info@kagg.eu>\";s:13:\"mailerroronly\";b:1;s:13:\"archiveformat\";s:4:\".zip\";s:11:\"archivename\";s:24:\"%Y-%m-%d_%H-%i-%s_%hash%\";s:11:\"fileexclude\";s:51:\".DS_Store,.git,.svn,.tmp,/node_modules/,desktop.ini\";s:10:\"dirinclude\";s:0:\"\";s:19:\"backupexcludethumbs\";b:0;s:18:\"backupspecialfiles\";b:1;s:10:\"backuproot\";b:0;s:17:\"backupabsfolderup\";b:0;s:13:\"backupcontent\";b:0;s:13:\"backupplugins\";b:0;s:12:\"backupthemes\";b:0;s:13:\"backupuploads\";b:0;s:21:\"backuprootexcludedirs\";a:0:{}s:24:\"backupcontentexcludedirs\";a:1:{i:0;s:7:\"upgrade\";}s:24:\"backuppluginsexcludedirs\";a:1:{i:0;s:8:\"backwpup\";}s:23:\"backupthemesexcludedirs\";a:0:{}s:24:\"backupuploadsexcludedirs\";a:0:{}s:9:\"backupdir\";s:32:\"uploads/backwpup-a34fdc-backups/\";s:10:\"maxbackups\";i:7;s:18:\"backupsyncnodelete\";b:0;s:7:\"lastrun\";d:1510222228;s:7:\"logfile\";s:98:\"/var/www/test/wp-content/uploads/backwpup-a34fdc-logs/backwpup_log_a34fdc_2017-11-09_10-10-28.html\";s:21:\"lastbackupdownloadurl\";s:129:\"http://test.kagg.eu/wp-admin/admin.php?page=backwpupbackups&action=downloadfolder&file=2017-11-09_10-10-28_SKRU7XDQ01.zip&jobid=1\";s:11:\"lastruntime\";d:1;}}', 'no'),
    

    在所有示例中,您都可以找到服务器上站点文件夹的路径:/var/www/test/.

    这是非常流行的 SEO 插件 Yoast 中保存设置的示例

    (291, 2, 'wp_yoast_notifications', 'a:3:{i:0;a:2:{s:7:\"message\";s:309:\"The configuration wizard helps you to easily configure your site to have the optimal SEO settings.<br/>We have detected that you have not finished this wizard yet, so we recommend you to <a href=\"http://test.kagg.eu/wp-admin/?page=wpseo_configurator\">start the configuration wizard to configure Yoast SEO</a>.\";s:7:\"options\";a:8:{s:4:\"type\";s:7:\"warning\";s:2:\"id\";s:31:\"wpseo-dismiss-onboarding-notice\";s:5:\"nonce\";N;s:8:\"priority\";d:0.80000000000000004;s:9:\"data_json\";a:0:{}s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";}}i:1;a:2:{s:7:\"message\";s:768:\"We\'ve noticed you\'ve been using Yoast SEO for some time now; we hope you love it! We\'d be thrilled if you could <a href=\"https://yoa.st/rate-yoast-seo?utm_content=4.8\">give us a 5 stars rating on WordPress.org</a>!\n\nIf you are experiencing issues, <a href=\"https://yoa.st/bugreport?utm_content=4.8\">please file a bug report</a> and we\'ll do our best to help you out.\n\nBy the way, did you know we also have a <a href=\'https://yoa.st/premium-notification?utm_content=4.8\'>Premium plugin</a>? It offers advanced features, like a redirect manager and support for multiple keywords. It also comes with 24/7 personal support.\n\n<a class=\"button\" href=\"http://test.kagg.eu/wp-admin/?page=wpseo_dashboard&yoast_dismiss=upsell\">Please don\'t show me this notification anymore</a>\";s:7:\"options\";a:8:{s:4:\"type\";s:7:\"warning\";s:2:\"id\";s:19:\"wpseo-upsell-notice\";s:5:\"nonce\";N;s:8:\"priority\";d:0.80000000000000004;s:9:\"data_json\";a:0:{}s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";}}i:2;a:2:{s:7:\"message\";s:162:\"Don\'t miss your crawl errors: <a href=\"http://test.kagg.eu/wp-admin/admin.php?page=wpseo_search_console&tab=settings\">connect with Google Search Console here</a>.\";s:7:\"options\";a:8:{s:4:\"type\";s:7:\"warning\";s:2:\"id\";s:17:\"wpseo-dismiss-gsc\";s:5:\"nonce\";N;s:8:\"priority\";d:0.5;s:9:\"data_json\";a:0:{}s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";}}}'),
    

    在这里,我们在序列化数据中看到一行提及域:href=\"http://test.kagg.eu/wp-admin/?page=wpseo_configurator\". 它不仅被序列化,而且被转义(\")。

    第三个原因是数据库中存在文件路径。它们不仅可以来自 WordPress 根目录,还可以来自主机帐户的用户主目录,甚至可以来自 Web 服务器的根目录(一些插件会这样做)。路径可以表示为常规字符串或序列化数据(上面的第一个示例)。转移到另一个主机时,它们也需要更改。

    如果您只是将数据库原样转移到新服务器会发生什么?显然,与包含先前域的文件路径和链接相关的内容将停止工作。

    该怎么办?显然,将文件的路径更改为新文件的路径和数据库中的域名。问题是如何。完全不合适的是经常可以找到的三个坏建议:

    1. 将数据库中的表记录中的wp_optionsc option_name=替换为新的域名。仅适用于最原始的网站。siteurlhome

    2. 将数据库转储到 .sql 文件,并对路径和域进行文本替换,然后将数据库上传到新服务器。这是破坏基地的直接途径。序列化的数据将被彻底破坏。

    3. 发送几个将更改域的 SQL 查询。同上——这是破坏基地的直接途径。序列化的数据将被彻底破坏。

    考虑上面带有序列化数据的第一个示例。在文本替换之后/var/www/test/,比如说,/home/i/account-name/site-name.org/public_html(如在一个流行的主机上),从该行

    s:46:\"/var/www/test/wp-content/themes/test/style.css\"
    

    得到一个字符串

    s:46:\"/home/i/account-name/site-name.org/public_html/wp-content/themes/test/style.css\"
    

    只有它的长度不再是 46 个字符,WordPress 将无法从数据库中读取这些序列化数据。

    因此,所有三个“流行”的建议都必须被认为是有害的。

    • 41
  2. spoilt
    2020-04-28T14:21:11Z2020-04-28T14:21:11Z

    使用 WP All-in-one Migration 插件,您将不会遇到这些问题!

    • 2
  3. webstackoverload
    2020-01-07T18:17:11Z2020-01-07T18:17:11Z

    1、本地服务器的域名必须和真实域名一致,最多支持HTTP和HTTPS协议,有WWW,无WWW。如果不是,则使其相同。

    2.如果它们不匹配,请更正路径。

    3. 你把站点转移到其他类型的服务器上,比如你有Apache(本地),并且真实服务器上安装了nginx php-fpm - 由于php代码的安全性,许多插件可能无法工作,或者糟糕的服务器配置,例如,如果它被框架化,代码可能会失败

    <? /*code here*/ ?>
    

    代替

    <?php /*code here*/ ?>
    
    1. 同样在传输后,在进入站点之前,清除浏览器缓存并关闭本地服务器。
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5