htaccess配置help.example.com两类301重定向仅跳转support页问题咨询
问题原因
你当前的配置存在两个核心错误:
- 拼接
%{HTTP_HOST}与${REQUEST_URI}的匹配逻辑存在疏漏,且跳转目标未加HTTP/HTTPS协议前缀,会被Apache识别为相对路径,导致跳转逻辑异常。 - 规则匹配顺序虽然理论上没问题,但变量拼接的写法容易出现边界匹配错误,且根路径判断不够精准。
修正后的配置
# 先确保重写引擎开启,已配置可忽略 RewriteEngine On # 子路径跳转规则:匹配help.example.com下所有非根路径请求 RewriteCond %{HTTP_HOST} ^help\.example\.com$ [NC] RewriteCond %{REQUEST_URI} !^/$ RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] # 根路径跳转规则:仅匹配help.example.com根路径请求 RewriteCond %{HTTP_HOST} ^help\.example\.com$ [NC] RewriteRule ^$ https://example.com/support/ [R=301,L]
注意事项
- 配置中的
https://可以根据你的站点实际协议替换为http://,必须保留协议前缀否则跳转仍会异常。 - 修改配置后需要清空浏览器缓存再测试,301为永久重定向,浏览器会长期缓存旧规则,测试阶段建议先将
R=301改为R=302,确认规则生效后再改回301避免缓存干扰。
内容的提问来源于stack exchange,提问作者Kirill Ryzhkov
相关产品推荐
相关产品推荐

