如何启用SSL,不包括特定目录和排除子域

时间:2018-04-09 11:04:38

标签: .htaccess ssl subdomain

我想:

  1. 规范化" domain.com"到" www.domain.com"
  2. 启用SSL,但是:
  3. 从/ PHP / *
  4. 中排除SSL
  5. 从特定页面排除SSL" noSSL.htm"
  6. 这就是我所拥有的:

    #enable SSL excluding /PHP directory
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !=443
    RewriteRule !^php/.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    #Enable SSL and add "www." if missing
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !=""
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ https%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    问题/问题:

    • 问题:子域名获取SSL
    • 如何从SSL中排除特定文件?
    • 我是否需要重复" RewriteEngine On"?

    非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

根据您的评论,规则应如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteCond %{SERVER_PORT} !=443
RewriteRule !^(php/.*|.*noSSL\.htm)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^  http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

因此noSSL.htm将被排除在外。

注意:清除浏览器缓存,然后进行测试。