基于旧站搭建新WordPress站点,求批量归档URL重定向规则
批量重定向旧WordPress归档链接到新结构的.htaccess规则
Hey,针对你这2000+篇文章的批量重定向需求,我们可以利用Apache的mod_rewrite模块在.htaccess里写一条正则匹配规则,一次性处理所有旧链接到新链接的跳转,不用手动逐个添加重定向。
同域名下的重定向规则(如果新旧站点共享同一个域名)
如果你的新旧站点只是路径结构变化、域名相同,直接把下面的规则放到.htaccess文件最顶部:
RewriteEngine On # 批量匹配旧归档链接并跳转到新地址 RewriteRule ^anzeigen/anzeigen-detail/article/(.*)\.html$ /anzeige/$1 [R=301,L]
跨域名的重定向规则(如果新旧站点是不同域名)
如果旧站是old.url.com、新站是new.url.com,用下面的规则:
RewriteEngine On # 先匹配旧域名(NC表示不区分大小写) RewriteCond %{HTTP_HOST} ^old\.url\.com$ [NC] # 匹配旧路径并跳转到新域名的对应路径 RewriteRule ^anzeigen/anzeigen-detail/article/(.*)\.html$ https://new.url.com/anzeige/$1 [R=301,L]
规则详解
我来拆解每个部分的作用,方便你理解:
RewriteEngine On:开启Apache的重写引擎,这是所有重定向规则生效的前提(大部分主流主机默认都已开启,若有疑问可联系主机商确认)。^anzeigen/anzeigen-detail/article/(.*)\.html$:正则匹配规则,精准定位旧链接:^标记URL的起始位置,确保从路径开头匹配anzeigen/anzeigen-detail/article/匹配旧链接里固定不变的路径部分(.*)是捕获组,专门抓取article-name123这个可变的文章标识(slug),.*表示匹配任意合法的URL字符直到遇到后续的.html\.html$匹配旧链接末尾的.html后缀,\是转义符,因为.在正则里是特殊字符,必须转义才能匹配实际的点
/anzeige/$1或https://new.url.com/anzeige/$1:跳转的目标地址,$1会自动替换成刚才捕获组抓取到的article-name123,完美对应新链接的结构[R=301,L]:R=301表示永久重定向,对SEO友好,告诉搜索引擎更新索引;L表示这是最后一条规则,匹配到后就停止处理后续规则,避免和WordPress自带规则冲突
关键注意事项
- 这条规则一定要放在WordPress默认的
.htaccess规则之前,因为WordPress自带的规则会优先处理所有请求,放在前面才能先匹配旧链接并完成跳转 - 测试验证:随便拿一篇旧链接(比如
old.url.com/anzeigen/anzeigen-detail/article/test-post-123.html)访问,应该会自动跳转到对应的新链接new.url.com/anzeige/test-post-123 - 特殊字符兼容:即使你的文章slug里包含下划线、短横线等特殊字符,这个规则也能正常处理
内容的提问来源于stack exchange,提问作者Kalti
相关产品推荐
相关产品推荐

