You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Linux 2 Elastic Beanstalk 如何将http与www重定向到https非www

Apache 多场景URL重定向正确配置方案

配置错误原因

你之前的逻辑存在两个问题:

  • 运算符写反:%{HTTP_HOST} !~ /^www\./ 表示主机名不是www开头时满足条件,等于不带www的正常请求也会被重定向规则匹配
  • 重定向目标未做域名修剪:直接使用%{HTTP_HOST}作为目标域名,匹配到非预期条件时就会出现www.www.example.com这类循环拼接的异常

不推荐将HTTP跳转、域名修剪多个逻辑合并到单条If条件中,逻辑运算符一旦写反很容易出现匹配异常,拆分独立规则的维护成本和出错概率都更低。

推荐配置方案

拆分多规则实现,每个规则只负责一类跳转逻辑,可读性和可维护性都更高,完整配置如下:

RewriteEngine On

# 规则1:所有HTTP请求统一跳转到HTTPS(保留原域名,适配反向代理X-Forwarded-Proto场景)
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</If>

# 规则2:所有带www前缀的HTTPS请求跳转到不带www的地址
<If "%{HTTP_HOST} =~ /^www\.(.*)$/">
    RewriteRule (.*) https://%1%{REQUEST_URI} [R=301,L]
</If>

配置说明

  • 用R=301代替临时跳转R,对搜索引擎更友好,测试阶段可以先用R=302避免缓存影响
  • 规则2中用正则捕获%1提取www后面的根域名,直接拼接作为跳转目标,避免出现域名重复拼接的问题
  • 每个规则末尾加L标记,匹配成功后终止后续规则判断,不会产生多余匹配开销

内容的提问来源于stack exchange,提问作者cjanow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 23:24:01