我为一家小型企业设置了一个新域,他们希望https://
在他们的域中拥有它,因为他们以前的主机默认提供它(以前的主机也有旧域)。
当我设置我的服务器配置块时,/etc/apache2/sites-available/
我将所有请求转发到新域,如下所示:
<VirtualHost *:80>
# example2 - NEW, example1 - OLD
# Simply redirecting all traffic to https
ServerName example2.com
ServerAlias www.example2.com
ServerAlias example1.com
ServerAlias www.example1.com
Redirect 301 / https://example2.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example2.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /path/to/ssl/example2/example2.crt
SSLCertificateKeyFile /path/to/ssl/example2/example2.com.key
SSLCACertificateFile /path/to/ssl/example2/example2.com-bundle
</VirtualHost>
<VirtualHost *:443>
# If the old site is arrived at via HTTPS, redirect to new
ServerName example1.com
ServerAlias www.example1.com
Redirect 301 / https://example2.com/
</VirtualHost>
</IfModule>
因此,对http://example2.com和http://example1.com的请求正在工作并重定向到https://example.com。但是,对https://example1.com的请求不会重定向到https://example2.com,而是向最终用户显示“可怕的屏幕”,警告他们连接可能不是私有的,等等。 (谷歌浏览器)
旧域(example1.com)的 DNS 区域文件指向 example2.com 服务器的 IP,我认为我的服务器配置已正确完成。为什么除了旧站点的 https:// 之外的所有内容都正确重定向?
这是你的问题:
这是在 HTTPS 端口 (443) 和 example1.com 上匹配的虚拟主机,但没有为虚拟主机运行 TLS。(请记住,您可以在任何您喜欢的端口上运行纯文本 HTTP 或加密的 HTTPS。在端口 443 上运行纯文本 HTTP 是不寻常的,但没有任何标准禁止,因此 Apache 允许您这样做。)
获取 example1.com 和 www.example1.com 的有效证书,然后将类似这样的内容添加到该 vhost:
它应该工作得更好。
作为与您的特定问题无关的附加点,除非您完全重新设计了 URL,否则请尽力将人们重定向到新域上的相应位置,而不仅仅是首页。破坏每个人的现有链接非常烦人,因此只有在绝对必要时才这样做。