如何禁用对特定虚拟主机的 https 访问?

nea*_*ine 10 centos virtualhost apache-2.2

好的,所以我有一个使用以下指令设置的 Apache 服务器:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>
Run Code Online (Sandbox Code Playgroud)

因此 example1.com 支持 SSL,可以通过 http://example1.com 或 https://example1.com 访问。但是,当我在浏览器中访问 https://example2.com 时,这会产生意外的副作用,即显示 https://example1.com。我想要做的基本上是以某种方式禁用 https://example2.com 或将其重定向到 http://example2.com,这样我在访问它时就不会收到警告和错误的站点。

Sha*_*den 7

您将无法避免收到警告,除非 example1 和 example2 位于不同的 IP 地址上,或者您获得涵盖两个名称的 SSL 证书——在建立 SSL 连接之后才会出现错误页面或重定向。

话虽如此,沿着这些路线的东西应该起作用:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)