我做了一个.htaccess将http请求重定向到https。但是我的本地测试服务器不支持https,所以我只需要在主机名与给定的主机名不匹配时重定向:
RewriteCond %{HTTPS} != on RewriteCond %{HTTP_HOST} != localhost [NC] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
问题是它在任何情况下都会重定向到https。你知道它为什么会这样吗?
5vf7fwbs1#
RewriteCond %{HTTPS} != on RewriteCond %{HTTP_HOST} != localhost [NC]
在=运算符后面不应该有 * 空格 *。(虽然我希望这会导致一个 * 错误 *?)它应该这样写:
=
RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !=localhost [NC]
在本例中,!=on和!=localhost是一个参数,=和!运算符(是的,是两个运算符,而不是一个)是参数本身的一部分。您还缺少RewriteRule上的L标志。如果这是您仅有的规则,则这不是问题,否则需要它来阻止进一步处理。您还需要清除浏览器缓存,因为浏览器已经缓存了错误的内容。
!=on
!=localhost
!
RewriteRule
L
1条答案
按热度按时间5vf7fwbs1#
在
=
运算符后面不应该有 * 空格 *。(虽然我希望这会导致一个 * 错误 *?)它应该这样写:在本例中,
!=on
和!=localhost
是一个参数,=
和!
运算符(是的,是两个运算符,而不是一个)是参数本身的一部分。您还缺少
RewriteRule
上的L
标志。如果这是您仅有的规则,则这不是问题,否则需要它来阻止进一步处理。您还需要清除浏览器缓存,因为浏览器已经缓存了错误的内容。