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

Apache2无法将non-www请求重定向至www的问题求助

将Non-WWW请求重定向到WWW的Apache正确配置

你当前的配置仅实现了强制HTTPS访问,但没有完成non-www到www的跳转——因为规则对example.com和www.example.com做了相同的重定向逻辑,最终example.com的请求还是会指向https://example.com,而非带www的域名。

正确的配置方案

下面是能同时实现「强制HTTPS」和「non-www转www」的Apache重写规则:

RewriteEngine On

# 处理non-www域名的重定向(无论HTTP/HTTPS)
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,R=permanent]

# 强制所有请求使用HTTPS(确保遗漏的HTTP请求也被跳转)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,R=permanent]

规则说明

  • RewriteEngine On:开启Apache的URL重写模块,这是所有重写规则的前提。
  • RewriteCond %{HTTP_HOST} ^example\.com$ [NC]:匹配主机名为example.com的请求,[NC]标记表示不区分大小写(比如匹配Example.com这类大小写混合的域名)。
  • RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,R=permanent]:将匹配到的请求永久重定向(301状态码)到带www的HTTPS地址,%{REQUEST_URI}保留原请求的路径参数,END表示停止执行后续的重写规则,避免循环。
  • 第二条规则用于兜底:如果有HTTP的请求(比如http://www.example.com),会被强制跳转至HTTPS版本。

简化版(合并逻辑)

如果不需要单独区分HTTP/HTTPS的跳转逻辑,也可以用一组规则完成所有需求:

RewriteEngine On

# 匹配所有非www或非HTTPS的请求,统一跳转至HTTPS的www域名
RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,R=permanent]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:01:21