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

Ubuntu Server中Apache2配置WWW转非WWW及HTTP转HTTPS重定向异常求助

Ubuntu Server中Apache2配置WWW转非WWW及HTTP转HTTPS重定向异常求助

看起来你现在卡在Apache2的重定向规则上了,目标是把所有流量统一到https://website.com,但目前的配置没处理好WWW到非WWW的跳转,尤其是HTTPS下的WWW请求没被正确转过去,我来帮你梳理下问题和调整方案:

当前配置的核心问题

  1. 80端口(HTTP)的规则:只是把HTTP请求转到同主机名的HTTPS地址,比如http://www.website.com会被转到https://www.website.com,而不是直接跳转到非WWW的HTTPS目标
  2. 443端口(HTTPS)的规则:完全没有处理WWW转非WWW的逻辑,所以当用户直接访问https://www.website.com时,不会触发任何重定向,就停留在带WWW的地址上了

调整后的配置方案

1. 修改front.conf(80端口配置)

把所有HTTP请求直接一步到位重定向到https://website.com,避免多余跳转:

<VirtualHost *:80>
    ServerName website.com
    ServerAlias www.website.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine On
    # 匹配所有HTTP请求(带/不带WWW),直接重定向到HTTPS非WWW地址
    RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ [NC]
    RewriteRule ^ https://%2%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

规则说明:%{HTTP_HOST} ^(www\.)?(.*)$会捕获主机名的两个部分,%2就是去掉www.后的核心域名(也就是website.com),最终直接跳转到目标地址。

2. 修改front-le-ssl.conf(443端口配置)

添加HTTPS下的WWW转非WWW规则,处理用户直接访问https://www.website.com的场景:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName website.com
    ServerAlias www.website.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine On
    # 匹配HTTPS下的WWW域名,重定向到非WWW地址
    RewriteCond %{HTTP_HOST} ^www\.website\.com$ [NC]
    RewriteRule ^ https://website.com%{REQUEST_URI} [END,NE,R=permanent]

    Include /etc/letsencrypt/...
    SSLCertificateFile /etc/letsencrypt/...
    SSLCertificateKeyFile /etc/letsencrypt/...
</VirtualHost>
</IfModule>

规则说明:用RewriteCond精准匹配带WWW的HTTPS请求,重定向到目标域名,[END]标记可以避免触发循环重定向。

后续操作

  • 修改完配置后,重启Apache2生效:
    sudo systemctl restart apache2
    
  • 测试重定向效果,可以用curl命令验证:
    # 测试HTTP带WWW
    curl -I http://www.website.com
    # 测试HTTP不带WWW
    curl -I http://website.com
    # 测试HTTPS带WWW
    curl -I https://www.website.com
    
    正常情况下,所有请求的Location响应头都应该指向https://website.com/开头的地址
  • 注意浏览器缓存:之前的301重定向会被浏览器缓存,测试时建议用隐私模式或者清除浏览器缓存

备注:内容来源于stack exchange,提问作者georgleb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:50:33