服务器 Ubuntu 22.04
apache2 -v 2.4.52
此问题的网站别名:example.com
我已经配置并启用了启用虚拟主机站点的 example.conf 文件,如下所示。 默认为禁用。 我的网站没有 .htaccess 文件。 当我在浏览器中访问 example.com 时,网站会启动并且 SSL 检查正常(挂锁)。 当我访问 http://example.com 时,网站启动并且 SSL 检查正常(挂锁)。 但是,当我访问 www.example.com 时,网站启动,但 SSL 失败(显示网站不安全,挂锁呈红色)。 我以为我在 example.conf 中正确设置了重定向,但我想我遗漏了一些东西。 请查看下面我的 .conf 文件并提出更改或故障排除方法的建议,以帮助我解决此问题。
<VirtualHost *:80 *:443>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
DocumentRoot /var/www/html/example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>
<VirtualHost *:80 *:443>
ServerName www.example.com
Redirect permanent / https://example.com/
DocumentRoot /var/www/html/example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>
问题:
解决方案:
sudo certbot --apache -d example.com -d www.example.com
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
# Ensure that www.example.com redirects to example.com
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>
</VirtualHost>