WordPress子域名转主域名:配置301重定向并移除日期路径
解决子域名迁移后主域名URL保留日期路径的问题
看起来你现在的重定向规则只是简单替换了域名,把blog.example.net/YYYY/MM/DD/mypost直接转到example.net/YYYY/MM/DD/mypost,但主域名的文章URL根本没有日期前缀,自然会404。咱们需要修改.htaccess里的Rewrite规则,把日期部分去掉,只保留文章slug。
正确的Rewrite规则配置
把下面的规则放在你的blog.example.net的.htaccess文件最顶部(一定要在WordPress自动生成的# BEGIN WordPress注释之前):
RewriteEngine On # 匹配子域名下带日期路径的文章URL,重定向到主域名去掉日期的地址 RewriteCond %{HTTP_HOST} ^blog\.example\.net$ [NC] RewriteRule ^[0-9]{4}/[0-9]{2}/[0-9]{2}/(.+)$ https://example.net/$1 [R=301,L]
规则解释:
RewriteCond %{HTTP_HOST} ^blog\.example\.net$ [NC]:确保这条规则只作用于子域名blog.example.net(NC表示不区分大小写)。RewriteRule ^[0-9]{4}/[0-9]{2}/[0-9]{2}/(.+)$ https://example.net/$1 [R=301,L]:^[0-9]{4}/[0-9]{2}/[0-9]{2}/:匹配开头的4位年份、2位月份、2位日期路径(比如2024/05/20/)。(.+):捕获日期后面的文章slug(比如mypost),用$1引用。[R=301,L]:301是永久重定向(对SEO友好),L表示这是最后一条规则,匹配后不再执行后面的规则。
额外注意事项
- 确保主域名
example.net的WordPress固定链接设置是不带日期的格式(比如“文章名称”模式),这样example.net/mypost才能正确访问。 - 重定向生效后,记得清空浏览器缓存和CDN缓存(如果有的话),避免旧的重定向缓存影响测试。
- 如果还有其他特殊页面需要处理(比如分类页),可以在这条规则后面添加针对性的Rewrite规则,但先确保文章的重定向正常工作。
内容的提问来源于stack exchange,提问作者Pete D
相关产品推荐
相关产品推荐

