如何通过htaccess将域名所有HTTP/HTTPS及子页重定向到另一服务器指定页
问题根因分析
你当前的重定向规则逻辑本身没有问题,HTTP请求不生效通常是两个核心原因:
- Apache的HTTP(默认80端口)对应的example.com站点配置中未开启
AllowOverride All,导致.htaccess规则在HTTP请求场景下没有被加载执行 - 部分服务环境下HTTP请求的域名匹配存在边界异常,原有规则没有覆盖所有场景
前置配置检查
首先确认Apache虚拟主机配置:
- 找到80端口下example.com站点的
<Directory>配置段,确保里面添加了AllowOverride All配置,修改完成后重启Apache服务生效。
调整后的.htaccess规则
RewriteEngine on RewriteBase / # 匹配所有访问example.com的请求,不区分协议、路径 RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] RewriteRule ^(.*)$ https://differenturl/login/login.html [R=301,L]
调整说明:
- 新增了带
www前缀的域名兼容,如果你确定不需要可以去掉(www\.)?这段 - 增加了域名结尾匹配符
$,避免其他前缀包含example.com的域名被误匹配
如果上述配置还是无法覆盖HTTP请求,可使用兜底规则强制适配所有协议:
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteCond %{SERVER_PORT} ^(80|443)$ RewriteRule ^(.*)$ https://differenturl/login/login.html [R=301,L]
注意事项
测试阶段建议先把状态码301改成302,避免浏览器永久缓存旧规则导致测试结果不准,确认规则完全符合预期后再改回301即可。
内容的提问来源于stack exchange,提问作者LisaH
相关产品推荐
相关产品推荐

