Php 如何使用MySQL搜索和替换修复WordPress中的断开链接?
我的一个客户在他们的网站上使用了Velvet Blues Update URL插件(),并破坏了几乎所有的链接 现在链接看起来像:Php 如何使用MySQL搜索和替换修复WordPress中的断开链接?,php,mysql,wordpress,Php,Mysql,Wordpress,我的一个客户在他们的网站上使用了Velvet Blues Update URL插件(),并破坏了几乎所有的链接 现在链接看起来像:www.site.compost name/而不是www.site.com/post name/ 这是一个活的网站,所以我需要非常小心如何修复它,这样我就不会让事情变得更糟 因此,我知道我需要某种正则表达式来检查站点url,后跟字母或数字,而不带/ 我可以通过运行如下查询查看大量断开的链接:SELECT*FROM wp\u posttea WHERE meta\u v
www.site.compost name/
而不是www.site.com/post name/
这是一个活的网站,所以我需要非常小心如何修复它,这样我就不会让事情变得更糟
因此,我知道我需要某种正则表达式来检查站点url,后跟字母或数字,而不带/
我可以通过运行如下查询查看大量断开的链接:SELECT*FROM wp\u posttea WHERE meta\u value REGEXP'site.com[0-9 a-z a-z]
通常,当更新数据库中的某些内容时,我会运行如下查询:updatewp\u postemta SET meta\u value=replace(meta\u value,'http://www.oldurl','http://www.newurl');代码>
但从我的研究中发现,MySQL不支持一种preg\u replace
功能()
我想一种方法可能是在wp_内容中添加一个过滤器,并在它加载到页面之前修复它,但这只是掩盖了问题,并不一定修复它
我对此有点困惑,因为有数千个断开的链接,所以搜索和替换查询有很大的空间出错,并可能使事情变得更糟,加上我的正则表达式知识有限 您可以为此使用非相似操作数。
比如说,
UPDATE wp_postmeta
SET meta_value=REPLACE(meta_value,'site.com','site.com/')
WHERE meta_value LIKE '%site.com%'
AND
meta_value NOT LIKE '%site.com/%'
当然,为了以防万一,您需要首先运行selectquery并查看结果。因为这不是理想的方法,可能会导致一些罕见的问题。sed
是您最好的朋友
sed的/oldurl/newurl/g'-r/project/root
将更新整个项目中的每个纯文本实例