拥有带有插件域的托管帐户。目录结构如下:
/public_html (main site is hosted in this directory)
/public_html/secondary_site/ (secondary site is hosted in this directory.
我在 public_html 文件夹中使用以下 .htaccess 文件(在 secondary_site 文件夹中没有 .htaccess 文件):
RewriteEngine On
# BEGIN Domain to folder mapping
# pointing HTTPS secondarysite.com to https://primarysite.com/secondarysite/
RewriteCond %{SERVER_PORT} ^443$
ReWriteCond %{HTTP_HOST} primarysite.com
ReWriteCond %{REQUEST_URI} !primarysite/
ReWriteRule ^(.*)$ https://primarysite.com/secondarysite/$1 [L]
# pointing HTTP secondarysite.com to http://primarysite.com/secondarysite/
RewriteCond %{SERVER_PORT} ^80$
ReWriteCond %{HTTP_HOST} secondarysite.com
ReWriteCond %{REQUEST_URI} !secondarysite/
ReWriteRule ^(.*)$ http://primarysite.com/secondarysite/$1 [L]
# END Domain to folder mapping
第二条规则适用于非安全连接,它正确转发到 public_html/ secondary_site 目录。
然而,当我尝试安全地连接到 secondarysite.com 时,我看到了警告页面,其中指出:
您尝试访问 secondarysite.com,但实际上您
到达了一个将自身标识为primarysite.com 的服务器。这可能是
由服务器配置错误或其他原因引起
严肃的。您网络上的攻击者可能试图让您
访问 secondarysite.com 的假冒(且可能有害)版本。
如果我单击“我明白,继续”按钮,它会将我带到正确的 SSL 安全目录 public_html/ secondary_site。 SSL锁是绿色的,快乐的。
为什么此 .htaccess 文件无法捕获对辅助站点的请求并将其重新写入主站点结构,然后才有机会因域不匹配而引发错误证书?
(这或多或少与这个问题 https://stackoverflow.com/a/10931004/372643,所以我将从那里调整我自己的答案。)
HTTPS 是基于 TLS/SSL 的 HTTP(请参阅RFC 2818 https://www.rfc-editor.org/rfc/rfc2818),在发送任何 HTTP 流量之前首先建立 SSL/TLS 连接。任何重定向(通过mod_rewrite
、自定义 PHP 代码或其他)在建立 SSL/TLS 连接后将始终适用。
不这样做实际上会产生安全问题,因为攻击者可以在证书验证之前重写和重定向客户端。
如果您想重定向自https://secondarysite.com
to https://primarysite.com
,获得的证书为https://secondarysite.com
必须有效于secondarysite.com
(然后,获得的证书https://primarysite.com
必须有效于primarysite.com
).
(如果两台主机在同一 IP 地址上提供服务,则可以使用两个带有服务器名称指示的不同证书,但并非所有客户端都一定支持它。)
最简单的方法是获得对双方均有效的证书secondarysite.com
and primarysite.com
。这可以使用具有多个主题备用名称条目的单个证书来完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)