我们维护网站旧文章的时候,经常需要修改一些页面的URL,甚至设置重定向到其他文章。在这样做的时候,我们会使用 301 重定向,但是在网站内的文章、页面甚至评论中,仍然会有一些内链指向原来的链接。在本文中,我们一起来看一下,怎么在你的网站内容中轻松找到这类链接并替换它们。
使用 WordPress 文章搜索
基本上,你可以在 WordPress 管理器中的 “文章”(如果你想查找其他文章的内部链接)或 “页面”(页面的内部链接)等页面中查找文章的内部链接。然后,你需要在搜索栏中输入你要查找的文章链接的标题。
就这样,它会向你显示与这篇文章有链接的文章:
在这里,我们找到了所有包含 “Hello world “文章链接的文章。
当然,剩下的工作需要手动完成,基本上你需要打开每一篇文章并替换其中的内部链接,如果包含目标内链的文章只有一两篇,直接这样处理就好了。但是如果需要处理的文章非常多,这样做就比较耗时了,这种情况下,我们可以批量替换。
在数据库中搜索和替换
操作数据库时,你需要有访问 phpMyAdmin 的权限,或者有在网站上安装插件的能力。
假设我们只有后者,在这种情况下,我们需要进入 “插件 > 添加新插件”,然后从那里安装一个免费的 “数据库管理工具 – Adminer”。
然后打开 Adminer,进入 “SQL 命令 “部分。现在运行一个 SQL 请求,例如这个:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%http://test.wpzhiku.com/hello-world%'
也许你已经知道 WordPress 数据库是如何工作的,但为了以防万一,我还是要为你强调一下:
- 在我的 SQL 请求中,我要求插件向我显示找到的文章的 ID 和标题、
FROM wp_posts
表示我们在包含内容的数据库表中进行搜索。请记住,如果你想搜索评论中的内部链接,你需要wp_comments
数据库表。此外,在您的具体情况下,数据库前缀也可能不同,例如wprs_posts
或其他。- 搜索字符串(URL)前后的
%
符号表示它可能在内容内部。
SQL命令执行结果如下图所示:
从技术上讲,我们在这里发现了两篇文章,其中包含目标文章的 URL – “迪拜的夏天 “和一些没有标题的文章。你在这里看到的重复文章只是一个修改。
再举一个例子,让我们尝试在评论中找到目标文章的内部链接。为此,我们可以运行以下 SQL 命令。
SELECT comment_ID, comment_author FROM wp_comments WHERE comment_content LIKE '%http://test.wpzhiku.com/hello-world%'
结果如下:
我们只找到了一条包含目标文章链接的评论。
搜索和替换的 SQL 查询
如果你不仅想搜索文章和评论内容中的内部链接,还想同时替换它们,下面是相关的 SQL 查询。
针对文章内容中的内部链接:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'URL1', 'URL2');
针对评论中的内部链接:
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'URL1', 'URL2');
执行完上面的SQL语句之后,我们就把文章和页面内链中的旧链接替换为新链接。