使用.htaccess regex重定向wordpress结构的正确方法



嗨,我正在尝试将重定向regex添加到我的.htaccess中,以重定向

/%year%/%monthnum%/%postname%.html/%category%/%postname%/%post_id%/

姚的助手给了我这个

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([^/]+).html$ https://www.ruoaa.com/$3

我不是专家,但我认为它与我的结构不匹配

此外,permalink并不是很久以前就已经完成的从博客到wordpress的迁移选项,permallink不会起到任何作用,所有的上层链接都会提供404

使用.htaccess中的regex进行更改是不可能的。要重定向到新的URL,每个URL都需要%category%%post_id%,这两个在旧URL中都不可用。您不能使用正则表达式来解析旧URL并重定向到新URL,因为regex无法获得这样做的信息。

要实现这一改变,您将需要一种完全不同的方法,如以下方法之一:

  • 安装一个重定向插件到WordPress,例如在如何更改WordPress永久链接中建议的插件之一
  • 创建所有URL的列表,并在旧URL和新URL之间创建映射,以分别重定向每个URL。对于长列表,您可能希望使用类似Apache的RewriteMap功能
  • 将旧样式的URL重写为自定义处理程序,并对其进行编程以从WordPress数据库中查找新URL

它与您想要从重定向的URL相匹配。但是,重定向目标不正确,因为它将重定向到/%postname%,而不是/%category%/%postname%/%post_id%/

但其中存在一个问题,即使用.htaccess重定向到/%category%/%postname%/%post_id%/是不可能的,因为源URL中不存在%catgeory%%post_id%

你需要使用WordPress本身的重定向插件来做到这一点,因为只有WP知道这些信息。WP将需要使用%year%%monthnum%和/或%postname%从其数据库中查找%category%%post_id%

最新更新