【问题标题】:MySql/Wordpress Strip file extensions from certain linksMySql/Wordpress 从某些链接剥离文件扩展名
【发布时间】:2013-09-24 23:21:13
【问题描述】:

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

编辑我搞混了。以下更正。

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

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

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

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

在此先感谢您提供有关此问题的任何帮助。

【问题讨论】:

    标签: mysql wordpress


    【解决方案1】:

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

    已编辑 ** 这应该可以解决问题。不漂亮,但我认为它应该工作。它会查看第二个 " 标记之前的所有内容。如果缺少它,则在末尾用 .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>';
    

    【讨论】:

    • 伟大的开始。但我应该更清楚。我修复了上面的示例以反映该问题。这个解决方案假设开始和结束标签没有被任何东西分开,而实际上包含被链接的帖子的标题。
    • 好的。现在就来看看吧。
    • 糟糕!我完全混淆了我的要求!我需要从链接中删除 .htm,而不是添加。哇,漫长的一天。因此,现在我需要获取以 开头的每个链接并删除 .htm,但只能从这些站点中删除,所以它不会改变其他链接。真的很抱歉你白白做了那个工作!我改变了我原来的问题。
    • 好的。我又拍了一张。希望它可以解决问题。
    • 没有骰子。 'your_field' 应该是什么?我认为问题在于该链接存在于 post_content 字段中并且不是排他性的。它位于许多其他东西中。如果我对此有误解,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    相关资源
    最近更新 更多