我在 Ubuntu 18.04 计算机上配置了支持 HTTPS 的 Apache 服务器。
我有 *.example.com 的 SSL 证书,因此我对 example.com 上的 HTTPS 的解决方案是将其重定向到 www,然后将所有子域重定向到 HTTPS。
这是我的 HTTP 版本重定向配置:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^/?(.*) http://www.%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
我曾尝试%{SERVER_NAME}
用%{HTTP_HOST}
我也多次重启了 apache2,并尝试清除浏览器的缓存,但它仍然重定向到https://www.
PS:我不是 Apache 专家,所以如果我使用的语法有误,请告诉我
答案1
这是我的操作方法,但我不使用文件.htaccess
- 我将其直接放入 Apache VirtualHost 配置中 - 请注意,我在 Debian 系统上,它们采用不同的路径进行配置,使用 *-available 与 *-enabled 目录,以及其他地方的主要全局服务器配置...
<VirtualHost 10.0.2.15:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine on
RewriteRule ^/(.*)$ https://www.example.com/$1 [R,L]
</VirtualHost>
<VirtualHost 10.0.2.15:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-example.com
<directory /var/www-example.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-example.com-access.log combined
</VirtualHost>
答案2
由于我使用 Let's Encrypthttps://sslforfree.com我在那里玩了一下,我发现我可以为 *.example.com 和 example.com 生成单个 SSL 证书,这样就无需重定向到 www。:)
*.example.com example.com
在网站的搜索栏中输入