.htaccessssl&;非ssl重定向

.htaccessssl&;非ssl重定向,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试编写一些简单的规则,以便将几个URL重定向到https,并将其他URL重定向到http。下面是我当前的设置,但它会导致重定向循环。谁能告诉我我做错了什么 RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} ^\/(sign-in|register)+ [NC] RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] RewriteCond %{HTTPS} on RewriteC

我正在尝试编写一些简单的规则,以便将几个URL重定向到https,并将其他URL重定向到http。下面是我当前的设置,但它会导致重定向循环。谁能告诉我我做错了什么

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^\/(sign-in|register)+ [NC]
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^\/(sign-in|register)+ [NC]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,L]

当请求者未指明HTTPS时,第一个规则集将所有通信重定向到HTTPS,仅当他们试图进入
登录
注册
页面时

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^\/(sign-in|register)+ [NC]
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
第二条规则是当请求HTTPS且URL不是
登录
注册
时,将所有通信重定向到非SSL

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^\/(sign-in|register)+ [NC]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,L]
这两个重定向都使用301重定向,这些重定向由浏览器缓存,因此,如果在某个时候您意外重定向到错误的位置,则可能会使用301重定向,而不是您在此处发生的事情

问题是,当您尝试在登录后访问某个页面时,您将被重定向回
HTTPS
。因此,如果您没有在登录目录中处理登录请求,或者您正在将它们重定向回HTTPS


如果登录或注册文件夹中没有的任何内容在HTTPS和HTTP之间来回跳转,则可能存在大量重叠。

我遇到的问题是当我尝试访问/注册时。我已经打开了重写日志,它正在一次又一次地尝试访问https/注册。基于我试图实现的目标,即保护/注册和/登录,并强制所有其他人使用http-你知道我应该如何修改我的规则吗?仅供参考-填写注册或登录表单时,我总是回发到同一url他们登录后会去哪个目录?或者,您是否只使用SSL进行身份验证,然后将它们放回HTTP?登录后,它们可以访问大量不同的目录,而不是/admin/*或/member/*等,因此我需要能够指定哪些目录是SSL还是非SSL