.htaccess httpsredirect最佳方法

我已经搜遍了所有redirect张贴购买别人,不能find我的问题的答案。

我有一个超过3000页的网站,我们正在谷歌重复问题。

我们希望将父目录中的所有内容都保存为http,除了我们的contact.php和login.php页面。

然后我们有3个文件夹必须被保护。 pipe理员,客户,客户

我已经尝试在每个文件夹的单独的.htaccess文件中使用下面的代码,但是当我尝试尝试find一个冲突的时候,我仍然在尝试为主目录find一个好的解决scheme。

RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} admin RewriteRule ^(.*)$ https://www.website.com/$1 [R,L] 

任何帮助将不胜感激。

不要试图在文件的基础上控制协议。 你需要的是两个不同的目录树,一个用于http,另一个用于https,尽pipe后者可能是前者的子目录。 一旦你有适当的结构,你redirect任何http调用一个安全页面或目录到https树中的相应位置。

我会使用黑名单/白名单的想法,分成两个单独的指令块。

对于HTTP-80的所有请求,匹配那些必须是HTTPS的目录或path,并redirect它们,其余所有请求都将通过并被正确地提供。 这段代码假定它们是顶级目录。

对于您的HTTPS-443请求,请执行相反的操作。 如果请求不符合允许的列表,则redirect回HTTP

 RewriteEngine On # redirect to https where appropriate RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} ^/(admin|clients|customers) [OR] RewriteCond %{SCRIPT_FILENAME} (contact.php|login.php) RewriteRule ^(.*)$ https://test.dev/$1 [R=301,L] # handle SSL requests, flick anything that doesn't match allowed back to non-SSL RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/(admin|clients|customers) RewriteCond %{SCRIPT_FILENAME} !(contact.php|login.php) RewriteRule ^(.*)$ http://test.dev/$1 [R=301,L]