嗨,我正在尝试将重定向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%
。