.htaccess Apache服务器在不应该重定向到https时重定向到https

xoefb8l8  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(122)

我做了一个.htaccess将http请求重定向到https。但是我的本地测试服务器不支持https,所以我只需要在主机名与给定的主机名不匹配时重定向:

RewriteCond %{HTTPS} != on
RewriteCond %{HTTP_HOST} != localhost [NC]

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

问题是它在任何情况下都会重定向到https。你知道它为什么会这样吗?

5vf7fwbs

5vf7fwbs1#

RewriteCond %{HTTPS} != on
RewriteCond %{HTTP_HOST} != localhost [NC]

=运算符后面不应该有 * 空格 *。(虽然我希望这会导致一个 * 错误 *?)它应该这样写:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !=localhost [NC]

在本例中,!=on!=localhost是一个参数,=!运算符(是的,是两个运算符,而不是一个)是参数本身的一部分。
您还缺少RewriteRule上的L标志。如果这是您仅有的规则,则这不是问题,否则需要它来阻止进一步处理。
您还需要清除浏览器缓存,因为浏览器已经缓存了错误的内容。

相关问题