在父目录访问HTTPS,在子目录访问HTTP


htaccess https in parent but http in subdirectory

我已经尝试了一些建议的解决方案来解决这个问题,但都没有任何效果。

我使用2个。htaccess文件,其中一个在我的根目录中,如下所示:

RewriteEngine on
RewriteBase /
RewriteRule ^(webservice|api) - [L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.domain.com%{REQUEST_URI}  [R=301,L]

这个重定向所有流量到主网站通过https,我需要。

然而,在子目录中,我想禁用重路由并强制所有通过http到该目录的请求。/webservice/rest/中的。htaccess文件如下:

RewriteEngine On
RewriteBase /webservice/rest/
RewriteCond %{HTTPS} on
RewriteRule (.*) http://www.domain.com/webservice/rest/%{REQUEST_URI}  [R=301,L]
RewriteRule ^testingPost/?$ testingPost.php [NC]
RewriteRule ^([a-zA-Z0-9'_'-]+)/?('?([a-zA-Z0-9'_'-'='?'&]))?$ otherfiledirect.php?method=$1&params=$2 [NC]

有一些重定向正在发生,但第2 htaccess的第3和第4行似乎没有做任何事情-有人能看到我做错了什么,以及如何在主站点上保持https,但在/webservice/rest/以下的任何url上强制http吗?

欢呼

服务器中的ssl配置文件有问题。允许覆盖需要在443端口的安全虚拟主机下设置为所有。修改后,根htaccess文件中的以下代码允许我在整个网站强制https,除了一个特定的文件夹:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/webservice     [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}  [R=301,L]

所以任何对http的请求都会转到https。但是,我仍然需要显式地将请求更改为指定文件夹上的https以重定向到http,因此在上面添加了以下代码:

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} /webservice      [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

防弹.

/webservice/rest/.htaccess中尝试,并确保在新浏览器中测试:

RewriteEngine On
RewriteBase /webservice/rest/
RewriteCond %{HTTPS} on
RewriteRule ^ http://www.domain.com/%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^testingPost/?$ testingPost.php [L,NC]
RewriteRule ^(['w-]+)/?('?(['w-=?&]))?$ otherfiledirect.php?method=$1&params=$2 [L,NC]