HTTP 重定向到主域,但不重定向到 HTTPS

HTTP 重定向到主域,但不重定向到 HTTPS

我正在尝试在我的 Ubuntu 17.10 机器上设置子域。我让 HTTPS 部分工作正常,并显示正确的子域文件,但当我将其设置为 HTTP 时,它显示主域,但我希望 HTTP 重定向并显示子域的 HTTPS 版本。

站点可用文件:

<VirtualHost *:80>  
    ServerName forum.domain.com

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =forum.domain.com
    RewriteRule ^ https://forum.domain.com%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName forum.domain.com
    DocumentRoot /var/www/forum/html

    <Directory /var/www/forum/html>
        AllowOverride All
    </Directory>
</VirtualHost>
</IfModule>

由于某种原因,HTTP 版本仅显示网站的主端口 80 版本。我使用 Let's Encrypt 对网站进行 HTTPS SSL 加密(因为它是免费的),并且我查看了其他 conf 文件,没有看到任何其他错误

/etc/hosts 文件:

127.0.0.1   localhost
--.--.--.-- vps141---.vps.ovh.ca    vps141---
127.0.1.1   vps141---.vps.ovh.ca    vps141---
--.--.--.-- forum.domain.com

我不得不删除一些号码,以免我的信息被所有人看到,抱歉 :(

答案1

这不是 SSL 的正确 Vhost。

您必须在 VHost 上实际打开 SSL(SSLEngine on),指定证书等等。这是一个合理的起点。

<VirtualHost *:443>
   DocumentRoot /var/www/forum/html/
   ErrorLog "logs/error_log"
   CustomLog "logs/access_log" common
   ServerName forum.domain.com
   ServerAlias www.forum.domain.com
   SSLEngine on
   SSLProtocol all -SSLv3 -SSLv2
   SSLCipherSuite HIGH:!aNULL
   SSLCertificateFile /etc/letsencrypt/live/forum.domain.com/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/forum.domain.com/privkey.pem
   SSLCertificateChainFile /etc/letsencrypt/live/forum.domain.com/chain.pem
   CustomLog /var/log/apache2/ssllog %t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

为了实现重定向,您可以对常规虚拟主机使用以下内容:

<VirtualHost *:80>
        ServerName forum.domain.com
        Redirect permanent / https://forum.domain.com/
</VirtualHost>

相关内容