使用sed在Linux上进行高级WordPress数据库搜索和替换

将WordPress或WooCommerce商店站点迁移到新域时,您可能会发现一些未更新的URL或路径。 同样,从HTTP转换为HTTPS时,您可能会遇到混合内容错误,通常可以通过更新数据库来解决。 传统上,有一些插件和脚本可帮助您更新数据库以解决这些问题,如果仍然有问题,则本文应帮助您修复WordPress数据库中的路径和URL。

我们发现插件时首先遇到了这个问题 Ultimate VC附加组件像这样以不同的方式编码冒号和正斜杠 http%3A%2F%2F

我假设您已经有一个通过插件PhpMyAdmin生成的WordPress数据库转储 管理员,转储MySQL或WP-CLI。

使用sed在Linux上进行高级WordPress数据库搜索和替换

我将使用Linux工具 grep sed 以获得最大速度。 如果您无权使用Linux,则可以使用WordPress插件 更好的搜索和替换

搜索事件

我们可以使用Grep模拟 -c 一个标记,它将计算找到字符串domain.ru的次数

grep -c 'andreyex.ru' database.sql

如果看到,您将获得一个整数作为输出 0,则数据库中没有domain.ru条目

234

网址编码

一些插件使用URL编码,该编码使用此格式进行HTTP和HTTPS迁移 %3A = :%2F = /

要检查数据库中是否有它们,请使用此命令。

grep -c 'http%3A%2F%2F' database.sql

粗暴的

一些插件避免 и / 并且很容易被忽略。

grep -c 'http://domain.ru' database.sql

WordPress方式

有时插件会在主机上存储有关存储路径的信息,您可以使用此命令来查找

grep -c '/public_html/domain.ru' database.sql

实际更换

许多教程用于 /作为分隔符 sed, 我用 #, 使其更易于阅读。 这也意味着您不必搜索任何正斜杠(/)在您的SED团队中。

表示全球替换, 重定向到一个新文件,以便不更改原始数据库转储。

该命令替换 domain.runewdomain.ru 在dump.sql文件中

sed 's#domain.com#newdomain.ru#g' dump.sql > staging-or-newdomain.sql

本示例包含一个用于WordPress安装的子文件夹, # 帮助maintan保持可读性。

sed 's#domain.ru/oldfolder#newdomain.ru/newfolder#g' dump.sql > staging-or-newdomain.sql

网址编码

替换URL编码的字符串

sed 's#http%3A%2F%2Fdomain.ru#http%3A%2F%2Fnewdomain.ru#g' dump.sql > staging-or-newdomain.sql

这是在子文件夹中替换URL编码的域字符串的方法

sed 's#http%3A%2F%2Fdomain.ru%2Fsubfolder#http%3A%2F%2Fnewdomain.ru%2Fsubfolder#g' dump.sql > staging-or-newdomain.sql

粗暴的

如果找到正斜杠,此命令将替换它们

sed 's#http://domain.ru#http://newdomain.ru#g' dump.sql > staging-or-newdomain.sql

WordPress搜索和替换路径

更换路径

sed 's#/public_html/andreyex.ru#/public_html/newfolder#g' dump.sql > staging-or-newdomain.sql

这应该适用于大多数WordPress数据库,如果您发现其他任何精美模板,请在评论中告诉我们!

使用Gzip压缩新转储

我们可以轻松地使用Gzip压缩修改后的转储,它将大大缩小.sql文件

cat dump.sql | gzip > dump.sql.gz

现在,您可以使用WP-CLI,PhpMyAdmin或Adminer重新导入修改后的转储。

Sidebar