首页 > 解决方案 > 强制站点范围的 HTTPS,但在特定目录中强制 HTTP

问题描述

我已经看过但找不到我需要的答案 - 或者对我有用。我有一个网站,我通过 htaccess 强制使用 https。有 1 个特定目录必须是 http(不能是 https)。

我的 htaccess 中有这个:

RewriteEngine On 
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/excluded_directory/.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

这不会强制“excluded_directory”中的非 https。我还尝试在“excluded_directory”中添加第二个 htaccess,但无济于事。有人可以帮我解决这个问题吗?

标签: .htaccesshttpsurl-rewriting

解决方案


您也可以尝试条件语句以获得更多选项。你会用这个替换你当前的规则。

  <If "%{REQUEST_URI} =~ m#^/exclude_directory# && %{HTTPS} == 'on'">
     RewriteEngine On
     RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
  </If>
  <ElseIf "%{REQUEST_URI} !~ m#^/exclude_directory# && %{HTTPS} == 'off'">
     RewriteEngine On
     RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
  </Else>

推荐阅读