【问题标题】:Calling mod_rewrite from PHP, or the equivalent从 PHP 或等效调用 mod_rewrite
【发布时间】:2012-08-29 18:05:28
【问题描述】:

我正在创建一个新的 wordpress 网站。我从旧网站导入了 1500 多篇帖子。问题是 wordpress 在 URL 中有类似“an-the-a-if-is”这样的词,而我的旧网站将这些词删除了。

这是 SEO 和断开链接的主要问题,因为新链接看起来像“the-cat-in-the-hat”,而我的旧链接只是“cat-hat”。

我只想更改我上传的过去 1500 个帖子,以从 URL 中删除指定的单词(我假设通过重写),我有要删除的单词列表。我希望创建的所有新帖子都包含这些词,所以我不想只使用 .htaccess。

有没有办法通过 PHP 说“如果帖子早于 XYZ 日期,则删除这些单词,并从新的重写 URL 中提供,否则,正常提供”

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    您可以在数据库上运行以下命令:

    UPDATE `wdp_posts`
    SET `post_name`= REPLACE(`post_name`,"-and-","-"),
    WHERE `post_date` < "20120101 00:00:00";
    

    (在尝试之前备份数据库!)

    这样做是重命名 2011 年 1 月 1 日之前的任何帖子,删除名称中出现的任何“-and”(这将成为 URL)。

    您需要编辑日期以满足您的需要。

    而且您需要多次运行它。一次用于“-and-”,一次用于“-if-”,一次用于“-in-”等。正如评论中指出的那样,它不会替换网址开头或结尾的单词。

    可以在一个查询中执行此操作,但它很难阅读,因此我建议一次执行一个关键字。

    【讨论】:

    • 关闭测试。我刚刚做了一个备份。
    • 工作。不过,这只会替换不在 URL 开头或结尾的单词。这是因为它正在替换部分单词。例如“-a”会替换像“-apple”这样的单词中的字母a,这很糟糕。这是我使用的代码UPDATE wp_posts` SET post_name= REPLACE(post_name,"-a-","-");`
    • @user1286782 很好,我已经根据您的建议更新了答案。希望这个错误没有吃掉任何重要的东西!
    【解决方案2】:

    Wordpress 本身有选项,以更改 URL 的形成方法,我认为它在一般选项下,或者可能是“写作”。无论哪种情况,您都可以自定义用于 URL 的内容或使用预定义的内容。 Wordpress 已经在使用htaccessmod_rewrite 来满足将所有内容传递给index.php 的需求。改变这种行为并覆盖 Wordpress 的需求可能会导致整个 WP 崩溃。

    底线,是否有您想要做的方法.. 它们可能属于 Wordpress Hacks,或者它们现在可能是 WP 中的集成选项(自从我使用 WP 以来已经有一段时间了,所以我没有记不太清楚了。但我知道您通常可以通过 WP 直接查找什么...

    更进一步,如果您从旧的 WP 站点导出到新的 WP 站点,则有导出从帖子到设置的所有内容的方法.. 可能也需要考虑该选项。

    【讨论】:

    • 对不起@chris,但没有内置功能可以从 URL slug 中删除单词。有插件,但它们都会在您安装插件后更改发布的帖子,您必须返回每个过去的帖子,并再次保存以进行更改。
    • 哦,我误读了您帖子的最后一点,以为您在谈论 url 中的实际日期,即 2012/08/post-blah-blah/ 并让我自己感到困惑。我道歉
    • 如果您谈论采用现有的 slug 并希望对它们进行物理更改,那么您总是可以想出一个脚本,通过数据库迭代所有这些,如果日期早于想要的,用删除的单词更新该行。但我认为我还没有完全理解你的需求,所以我还是一个脑袋的时候就闭上了嘴。
    • 这是正确的想法。一个 mysql 查询说“拿走蛞蝓,删除这些词,然后放回去”就可以了。我要去谷歌搜索我在这种情况下使用的正确命令。谢谢@chris
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多