我一直在尝试将一个子目录从HTTP重写为HTTPS无济于事。我查看了其他帖子并尝试实施解决方案:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} subdirectory
RewriteRule ^(.*)$ https://www.exmaple.com/subdirectory/$1 [R,L]
以及
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(subdirectory/.*)$ https://www.example.com/$1 [R=301,L]
并将它们放在根目录.htaccess
文件或Plesk的 Apache和Ngnix设置中。但每当我输入
http://www.example.com/subdirectory/some.html
我将永远得到
https://www.example.com/subdirectory//subdirectory/some.html
当然是找不到404。任何帮助表示赞赏。
答案 0 :(得分:0)
要强制只为一个目录使用HTTP,那么您可以使用的是:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} ^\/(subdirectory)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} !^\/(subdirectory)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
以上是做什么的?第一个条件检查HTTP是否不,如果没有,则检查目录/subdirectory/
是否会强制执行此目录,只将此目录强制为HTTPs。
第二组规则基本上是相反的,除了目录/subdirectory/
之外,一切都强制到HTTP。
确保在>>测试之前清除缓存。