我已经为一家小型企业设置了一个新域名,他们希望将其添加到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:// 之外,其他一切都正确重定向?
答案1
请求https://example1.com不会重定向至https://example2.com相反,他们向最终用户显示“可怕的屏幕”,警告他们连接可能不是私密的
这是你的问题:
<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>
这是与 HTTPS 端口 (443) 和 example1.com 匹配的虚拟主机,但是没有为 vhost 运行 TLS。(请记住,您可以在任何您喜欢的端口上运行纯文本 HTTP 或加密的 HTTPS。在端口 443 上运行纯文本 HTTP 是不寻常的,但任何标准都不禁止,所以 Apache 允许您这样做。)
获取 example1.com 和 www.example1.com 的有效证书,然后向该虚拟主机添加类似这样的内容:
SSLEngine on
SSLCertificateFile /path/to/ssl/example1/example1.crt
SSLCertificateKeyFile /path/to/ssl/example1/example1.com.key
SSLCACertificateFile /path/to/ssl/example1/example1.com-bundle
而且它应该能更好地发挥作用。
作为与您的具体问题无关的补充一点,除非您完全重新设计了 URL,否则请尽力将人们重定向到新域名上的相应位置,而不仅仅是首页。破坏每个人现有的链接是非常烦人的,所以只有在绝对必要时才这样做。