apache - Apache Vhosts HTTP 和 HTTPS(两者)重定向到另一个域
问题描述
我正在尝试将两个版本的 Domain-A(HTTP 和 HTTPS)重定向到另一个域 Domain-B。很简单的东西,但没那么简单。
看看我现在在做什么:
<VirtualHost *:80>
ServerName DOMAIN-A.com
ServerAlias www.DOMAIN-A.com
RewriteEngine on
RewriteRule (.*) http://DOMAIN-B.com? [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAIN-A.com
ServerAlias www.DOMAIN-A.com
RewriteEngine on
RewriteRule (.*) https://DOMAIN-B.com? [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAIN-B.com
DocumentRoot /var/www/DOMAIN-B/html
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/DOMAIN-B/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/DOMAIN-B/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/DOMAIN-B/chain.pem"
</VirtualHost>
对 HTTP(端口 80)DOMAIN-A 到 DOMAIN-B 的请求符合预期
对 HTTPS(端口 443)DOMAIN-A 的请求不会重定向,而是给我 SSL 证书错误。由于 DOMAIN-A 没有 SSL,因此呈现我的默认服务器证书而不是重定向。(SSL BAD DOMAIN)当我在浏览器中接受异常时,它会重定向。
问题 ***
你能在我的虚拟主机文件上看到任何错误吗?还是我需要为要重定向的域创建 SSL 证书?任何更简单的解决方法?
非常感谢
解决方案
您必须在端口 443 上包含 DOMAIN-A.com 的 SSL 文件,如下所示:
<VirtualHost *:80>
ServerName DOMAIN-A.com
ServerAlias www.DOMAIN-A.com
Redirect permanent / https://DOMAIN-B.com/
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAIN-A.com
ServerAlias www.DOMAIN-A.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/DOMAIN-A/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN-A/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/DOMAIN-A/chain.pem
Redirect permanent / https://DOMAIN-B.com/
</VirtualHost>
<VirtualHost *:443>
ServerName DOMAIN-B.com
DocumentRoot /var/www/DOMAIN-B/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/DOMAIN-B/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN-B/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/DOMAIN-B/chain.pem
</VirtualHost>
此外,您在重定向到的 DOMAIN-A.com 中有一个小错误,http://DONMAIN-B.com/
但端口 80 上没有该域的配置。也许您也应该添加它。
推荐阅读
- c# - 如何在 .net 核心中的 Url 中显示当前文化?
- reactjs - React Material-ui 库错误为非布尔属性 `active` 收到`true`。使用 Stepper 组件时
- java - Jersey http 客户端:使用自定义 Content-Length 提出请求
- java - 当我的活动处于横向时,如何以纵向模式打开 NavigationDrawer?
- java - 按条件拆分和配对子字符串
- json - 有没有办法在不使用 EXTRACT 的情况下编写 u-sql 查询
- dart - 如何在搜索委托上添加提示文本?
- android - 在改造中发送可选字段和多部分
- javascript - 仅当 div 未隐藏时才需要在表单中输入以发送电子邮件
- javascript - jsTree使用AJAX调用扩展节点不起作用