将子目录重写为https

时间:2017-08-29 18:44:16

标签: apache .htaccess mod-rewrite

我一直在尝试将一个子目录从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。任何帮助表示赞赏。

1 个答案:

答案 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。

确保在>测试之前清除缓存