使用通配符子域和ssl设置复杂的htacess

时间:2014-02-24 21:37:26

标签: apache .htaccess redirect ssl https

我安装了通配符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

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

  3. 编辑:我了解如果有人请求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]
    

1 个答案:

答案 0 :(得分:2)

  

SSL证书不能单独在域上运行,因此如果有人请求https://mysampledomain.com,则会在重定向发生之前收到错误。

除了获得涵盖您的基本域的证书之外,您还可以执行 nothing

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

你甚至不会 到服务器可以将我的浏览器重定向到其他地方的位置 - 加密发生在HTTP之上的层上,并且因为我们无法就加密达成一致,所以你的服务器确实如此甚至没有与我的浏览器“交谈HTTP”(这是必要的,这样你就可以发出 HTTP 重定向)。

相关问题