我想要建立一个http网站:http://example1.com以及一个 https 网站:https://example2.com使用以下配置:
Listen 80
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example1.com
DocumentRoot /var/www/example1.com/public_html
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /var/www/example2.com/public_html
SSLCertificateFile...
SSLCertificateKeyFile...
SSLEngine On
</VirtualHost>
然而,如果我访问https://example1.com,我被重定向到https://example2.com如果我访问http://example2.com,我被重定向到http://example1.com这不是我想要的。我希望https://example1.com和http://example2.com根本不存在。我该怎么办?
答案1
你将要必须再定义两个 VirtualHost 块。如果 Apache 找不到与该名称匹配的 VirtualHost,它将使用属于该端口的第一个 VirtualHost。
当然,你不必为同一个网站提供服务:
- 您可以提供一个错误页面,例如通用的404 未找到。这会惹恼别人。
- 对于
example2.com
,您可以使用 RewriteRule 将所有 HTTP 访问者重定向到 HTTPS。 - 对于
example1.com
...好吧,我真的不明白为什么你不通过 HTTPS 提供该服务?
但是,您不能让浏览器报告该域不存在,因为无论如何访问,它仍然是同一个域。