由于某种原因,Apache mod_rewrite 将我重定向到 https://www.(字面意思)

由于某种原因,Apache mod_rewrite 将我重定向到 https://www.(字面意思)

我在 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在网站的搜索栏中输入

相关内容