Ubuntu系统下Apache2配置重定向时出现循环该如何解决?
配置错误原因
- 缺少
www.example.com对应的443端口虚拟主机配置,所有443端口的请求(包括访问www.example.com的请求都会匹配到现有ServerName example.com的443虚拟主机,触发重定向规则,形成循环 - 存在重复的
ServerName example.com的443虚拟主机配置,属于冗余无效配置,会导致匹配优先级混乱
修复方案
第一步:替换/etc/apache2/sites-enabled/000-default.conf全部内容为以下配置,删除原有重复、冗余的虚拟主机块:
# 处理80端口所有HTTP请求,统一重定向到HTTPS带www地址 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent / https://www.example.com/ </VirtualHost> # 处理443端口非www的HTTPS请求,重定向到带www地址 <VirtualHost *:443> ServerName example.com Redirect permanent / https://www.example.com/ SSLEngine on SSLCertificateFile /etc/ssl/example_com.crt SSLCertificateKeyFile /etc/ssl/example_com.key SSLCertificateChainFile /etc/ssl/example_com.ca-bundle </VirtualHost> # 处理443端口带www的请求,正常响应站点内容 <VirtualHost *:443> ServerName www.example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/example_com.crt SSLCertificateKeyFile /etc/ssl/example_com.key SSLCertificateChainFile /etc/ssl/example_com.ca-bundle </VirtualHost>
第二步:验证配置并重启服务
- 执行以下命令验证配置语法正确性:
apache2ctl configtest - 返回
Syntax OK后,执行重启命令生效配置:systemctl restart apache2
注意事项
确认你使用的SSL证书同时覆盖example.com和www.example.com两个域名,否则访问带www的地址会触发证书不安全报错。
内容的提问来源于stack exchange,提问作者nethunter
相关产品推荐
相关产品推荐

