如何配置301重定向规则将所有blog目录页跳转至指定news页面
原配置失效原因
- 你当前使用的
Redirect指令属于mod_alias模块,本身不支持正则表达式规则,你写的^/blog/?$正则语句不会被识别生效,只会被当作普通路径处理。 - 即使正则规则能被识别,
^/blog/?$的规则也仅能匹配/blog、/blog/两个根路径,无法匹配/blog/后带任意路径的子页面。
可行修改方案
提供两种实现方式,二选一即可:
方案1:使用支持正则的RedirectMatch指令(最简单)
RewriteEngine On # 匹配所有以/blog开头的路径,统一301跳转到/news/ RedirectMatch 301 ^/blog(/.*)?$ https://test.com/news/
上述规则的正则^/blog(/.*)?$可覆盖所有/blog开头的路径,包括/blog、/blog/、/blog/任意层级子路径,完全符合你的跳转需求。
方案2:使用mod_rewrite的RewriteRule实现
如果你习惯用rewrite模块写规则,可使用如下配置:
RewriteEngine On RewriteRule ^blog(/.*)?$ https://test.com/news/ [L,R=301]
注意事项
配置修改后需要重启Apache服务生效,测试前请清空浏览器缓存,301为永久重定向,浏览器会默认缓存旧的跳转规则,未清缓存可能导致测试结果不准确。
内容的提问来源于stack exchange,提问作者Fernando Souza
相关产品推荐
相关产品推荐

