如何编写 mod_rewrite 规则来确定域不是主域,然后将 https:// 更改为 http://

如何编写 mod_rewrite 规则来确定域不是主域,然后将 https:// 更改为 http://

我已经为 example.com 设置了一个带有通配符 SSL 的 WordPress 多站点,以便安全地访问管理区域。但是,我还使用域映射将其他域映射到其他站点,例如将 alldogs.com 映射到 alldogs.example.com。

问题是,当我尝试从映射域(例如 alldogs.com)的管理员访问站点的前端时,通过单击“访问站点”,链接转到https://alldogs.com因为管理区域强制应用了 SSL。这会生成证书警告,因为证书针对的是 example.com,而不是 alldogs.com。

如何编写 mod_rewrite 规则来确定所单击的 url/链接是否不是主域(例如 example.com),然后将 https:// 更改为 http://,以便可以通过端口 80 访问该站点,并且不会为该映射域生成证书警告

答案1

您无法匹配 mod_rewrite 中使用的 DNS 名称。它只能看到查询字符串;当客户端发出请求时, mod_rewrite 会在应用规则时GET /foo查看。/foo

不要使用相对链接链接到启用 SSL 的区域,请尝试使用绝对链接(指定完整的 URL)。

答案2

即使您可以使重写工作,您仍然会看到警告,因为客户端必须使用“错误”的 SSL 连接到服务器并发送请求,然后获取重定向。

如果重写不容易(你可以检查在条件中可以使用什么mod_rewrite 文档),您可以轻松地为“错误”的域名设置虚拟主机,将所有内容重定向到正确的 URL?但是您仍然会看到警告,没有办法解决。

相关内容