【问题标题】:complex htacess set up with wildcard subdomains and ssl使用通配符子域和 ssl 设置的复杂 htacess
【发布时间】:2014-02-24 21:37:25
【问题描述】:

我安装了通配符 SSL 证书,让我可以通过 SSL 为任何子域提供页面。

例如: https://www.domain.com https://test.domain.com https://demo.domain.com

我需要编写一些 .htaccess 规则来执行以下操作。

  1. 如果单独请求域,则强制使用 WWW 和 SSL

    例如。将http://domain.comhttps://domain.com 重定向到https://www.domain.com

  2. 对所有没有 SSL 的请求强制使用 SSL

    例如。 http://anything.domain.com 重定向到 https://anything.domain.com

编辑:我知道如果有人请求 https://domain.com(无子域),则无法防止出现证书错误

考虑到这一点,下面的代码似乎是处理其他重定向的最佳方式吗?

# WWW
RewriteCond %{HTTP_HOST} ^mysampledomain\.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# SSL
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【问题讨论】:

    标签: apache .htaccess redirect ssl https


    【解决方案1】:

    SSL 证书不能单独在域上工作,所以如果有人请求https://mysampledomain.com,他们会在重定向发生之前收到错误。

    除了获得涵盖您的基本域的证书外,您无能为力

    当我的浏览器请求https://mysampledomain.com 时,它要做的第一件事就是处理与您的服务器的连接加密。但是由于您的服务器无法为主机名提供有效的 SSL 证书,我的浏览器会说,“谢谢,但不,谢谢——我不能信任你,因此我不会和你谈任何更多。”

    您甚至不会得到到您的服务器可以将我的浏览器重定向到其他任何地方的地步——加密发生在 HTTP 之上的层上,由于我们无法就加密达成一致,您的服务器可以甚至无法与我的浏览器“对话 HTTP”(这是必要的,以便您可以发出 HTTP 重定向)。

    【讨论】:

    • 谢谢,这就是我害怕的。无论如何,我认为这将是一个边缘案例。
    • 我编辑了上面的示例,您认为这是涵盖所有情况的最佳方法吗?
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2016-10-21
    • 2014-04-01
    • 2018-05-11
    • 2014-09-10
    相关资源
    最近更新 更多