.htaccess 301重定向配置问题:已删除旧路径如何跳转至新路径
配置错误原因
- 核心错误是
Redirect指令的目标地址格式不符合要求:Apache的Redirect(属于mod_alias模块)的目标路径如果指向跨域名或者完整站点路径,必须使用带协议头的完整绝对URL。你填写的example.ca/new没有添加http://或https://前缀,会被Apache识别为站点根目录下的相对路径,最终实际跳转地址会变成https://example.ca/example.ca/new,自然无法命中正确的新路径。 - 额外排查点:需要确认站点Apache配置中,对应虚拟主机的
AllowOverride参数设置为All,且mod_alias模块已启用,否则.htaccess文件不会生效。
正确配置方法
方法1:使用Redirect指令(单路径简单跳转)
直接修改原配置为完整绝对URL即可:
Redirect 301 /old https://example.ca/new
如果你的站点仅在同域名内跳转,也可以用同域相对写法,避免硬编码域名:
Redirect 301 /old /new
方法2:使用RewriteRule(更灵活的匹配规则)
如果后续有更多重定向规则需求,可以使用mod_rewrite的写法,还能兼容处理末尾斜杠的匹配问题(同时匹配/old和/old/):
RewriteEngine On RewriteRule ^old/?$ /new [L,R=301]
测试注意事项
301是永久重定向,浏览器会长期缓存跳转结果。修改配置后请清空浏览器缓存,或者使用无痕模式测试,避免旧缓存影响配置验证结果。
内容的提问来源于stack exchange,提问作者Daniel Chung
相关产品推荐
相关产品推荐

