我正在尝试在我的 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>