强制http到一个filder rest force https

时间:2016-12-16 09:39:03

标签: .htaccess

我正在尝试将非https强制到网站上的一个文件夹,但其余的都应该是https。这是我的.htaccess代码:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule ^reports$ http://%1/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([0-9a-zA-Z].+)$ /page.php?title=$1 [L]

ErrorDocument 404 404.php

1 个答案:

答案 0 :(得分:0)

我猜您遇到的问题是,甚至报告文件夹也被强制为https。是吗?

那就是,因为你把这个规则放在第一位。一般规则顺序应该是:最具体的第一个,最常见的最后一个。因此,您的常规https强制规则应该是最后一个。或者至少它必须在您的http强制规则之后。

此外,您只强制/报告/到http。该目录中的所有内容都将再次为https。我认为你应该把它改成

RewriteCond %{REQUEST_URI} ^/reports/(.*)$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]

如果我看得正确,你强制执行一切不以www开头。将该规则放在reports-http规则之后,并将其更改为https。这将为您节省一次重定向。

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

比你的https-enforce规则,而不是重写到page.php,如果不是现有的文件或目录。