如何在.htaccess中配置指定路径301重定向其余路径返回410?
实现方案
完全可以实现,无需列出所有未匹配路径,利用Apache mod_rewrite规则从上到下顺序匹配、L标记终止后续规则执行的特性,只需要在你现有重定向规则的最后加一条兜底的410规则即可,同时还可以把你重复的15条分类重定向规则简化成单条,精简配置:
注意:你现有配置中写的
^category1\*$转义了*,只能匹配路径为category1*的请求,如果你实际需要匹配category1开头的所有路径,需要改为^category1.*$的写法,以下配置按匹配category1-15开头的所有路径的需求调整。
完整配置示例
# 批量匹配category1到category15的路径,301永久重定向到新域名 RewriteRule ^category(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15) https://NEWSITE.com/ [R=301,L] # 首页重定向 RewriteRule ^$ https://NEWSITE.com/ [R=301,L] # 兜底规则:所有未匹配到上述规则的请求直接返回410 Gone状态 RewriteRule ^ - [G,L]
规则说明
- 前面的重定向规则匹配到你需要跳转的路径后,会触发
L标记终止后续规则执行,不会走到兜底的410规则 - 最后一条规则中的
G是mod_rewrite内置的对应410状态码的标记,-表示不修改目标URL,直接返回状态码即可,效果和手动写[R=410,L]完全一致
如果你需要保留原来15条分开写的重定向规则,只需要在所有重定向规则的最后加上上面那条兜底的410规则即可生效。
内容的提问来源于stack exchange,提问作者Mark Marino
相关产品推荐
相关产品推荐

