我发现了类似的问题,但无论我尝试什么,我都无法让htaccess去做我需要的东西。我想要的是在访问一个(或多个)虚拟子目录时将访问者引导到SSL连接,然后在离开这些选定的子目录时将其反转。
我的规则如下:
Options +FollowSymlinks
RewriteEngine on
#switch on SSL in /directory/ only
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/directory/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
#switch off SSL in other folders
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/directory/
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteRule ^([^/\.]+)/?$ /index.php?var1=$1 [NC,L,QSA]
RewriteRule ^([^/\.]+)/([^/\.]+).html /index.php?var1=$1&var2=$2 [NC,L,QSA]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /index.php?var1=$1&var2=$2 [NC,L,QSA]
似乎启用SSL并关闭SSL冲突,当我尝试通过https://www.domain.com/foo/访问任何网页时,我被正确地重定向到http://www.domain.com/foo/。
但是,在尝试访问http://www.domain.com/directory/(应该是SSL)时,我被重定向到http://www.domain.com/index.php?var1=directory而不是https://www.domain.com/directory/。
我真的非常感谢我在哪里出错了。我已经通过stackoverflow和网络搜索了几个小时,寻找答案,但我只是围成一圈,看不到树上的木头。
感谢您提供任何指导/帮助。