0

一点背景。我已成功将 50,000 多个帖子导入 wordpress。许多帖子都有引用其他页面的链接。修复链接可能是在 MySQL 中进行简单搜索和替换的问题,但是,存在引用 pagetitle.htm 的链接,并且由于它们应该引用的帖子没有 .htm 扩展名,因此结果为 404。

编辑我把事情搞混了。下面更正。

旧要求: 我想将 .htm 添加到数据库中的所有链接;即添加 .htm 到所有以 www.example.com/xxxxxx 开头的链接(xxx 是不一致的)。在 MySQL 中,如何选择字符串开头一致的所有链接并附加 .htm,但在结束标记之前?

IE

change all <a href="website.com/#####">#####</a> *to* <a href="website.com/#####.htm">#####</a>

更正: 使用 mysql,我想仅在链接以某个域开头时删除所有出现的 .htm。

我也尝试将 .htm 添加到我的永久链接结构中,但我无法将其应用于自定义帖子类型,仅适用于帖子和页面。而且,这感觉太像创可贴了。然而,我可能会被说服。

提前感谢您在此问题上的任何帮助。

4

1 回答 1

0

我不确定这是否适用于所有情况,但这里有一个想法:

已编辑** 这应该可以解决问题。不漂亮,但我认为它应该工作。它查看第二个 " 标记之前的所有内容。如果缺少它,最后用 .htm 替换它。

UPDATE  your_table

SET     post_content = REPLACE(post_content,
                             SUBSTRING_INDEX(post_content, '"', 2),
                             LEFT(SUBSTRING_INDEX(post_content, '"', 2), LENGTH(SUBSTRING_INDEX(post_content, '"', 2)) - 4)
                            )

WHERE   RIGHT(SUBSTRING_INDEX(post_content, '"', 2),4) = '.htm';

原来的 **

UPDATE  your_table

SET     link_field = REPLACE(link_field, '"></a>', '.htm"></a>')

WHERE   RIGHT(link_field, 10) <> '.htm"></a>';
于 2013-09-20T18:06:33.390 回答