Apache Vhosts HTTP 和 HTTPS(两者)重定向到另一个域

标签 apache vhosts

我正在尝试将两个版本的 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 上没有该域的配置。也许您应该也添加这个。

关于Apache Vhosts HTTP 和 HTTPS(两者)重定向到另一个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53215620/

相关文章:

php - Laravel Redirect::route() 在 vhost 上访问错误的 url

node.js - 我应该如何在同一系统上组织多个 Express 服务器?

apache - 在 Azure 上托管的 Red Hat 6 中安装通配符 SSL 证书

linux - 允许传入流量到 CentOS 服务器

apache - 尝试访问我的网站时出现内部服务器错误

linux - 设置虚拟主机后出现 403 错误

python - 使用 Ansible 启用 Apache 站点

mysql - MAMP 和 Mac Apache Web 服务器不工作

python - mod_wsgi - 致命 Python 错误 : initfsencoding: unable to load the file system codec

google-chrome - Chrome 中的自定义域