# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
上述 .htaccess 代码未重定向到 HTTPS。为什么?
(故意将 IfModule 注释掉,以表明我没有错过重写模块)
更新
当尝试http://htaccess.madewithlove.be我收到了
RewriteCond %{HTTPS} =on This condition was not met
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] This rule was not met because one of the conditions was not met
RewriteCond %{REQUEST_FILENAME} !-f This variable is not supported: %{REQUEST_FILENAME}
RewriteCond %{REQUEST_FILENAME} !-d This variable is not supported: %{REQUEST_FILENAME}
我的 htaccess 功能很弱,所以我无法理解如何
RewriteEngine On
变成
RewriteCond %{HTTPS} =o
得到评论
This condition was not met
或者那个
RewriteCond %{REQUEST_FILENAME} !-d
得到评论
This variable is not supported: %{REQUEST_FILENAME}
也许我累了。也许我只是太蠢了。
短暂性脑缺血发作
答案1
也许我累了。也许我只是太蠢了。
显然很累。
我不记得您编辑之前的具体配置,但根据您运行的测试:
RewriteCond %{HTTPS} =on This condition was not met
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] This rule was not met because one of the conditions was not met
RewriteCond %{REQUEST_FILENAME} !-f This variable is not supported: %{REQUEST_FILENAME}
RewriteCond %{REQUEST_FILENAME} !-d
您似乎有以下规则和条件:
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
如果你休息一会儿后再看它,就会发现这不是你想要的。
RewriteCond %{HTTPS} =on
表示如果请求是 httpS,则执行规则。因此您需要:
RewriteCond %{HTTPS} =off
答案2
在...的帮助下Htaccess 测试器, 其他回答在 stackexchange、@ETL 和 @Michael Hampton 我最终得到:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
你们两个中的任何一个人都可以复制我的答案,我会将其标记为唯一(先到先得)并删除它。尊重那些应该这样做的人。
需要澄清的是,我更愚蠢,而不是疲惫。网站瘫痪后,我也很紧张。
这让我想到警告知道这一点是件好事。是否有某种奇怪的客户端缓存?这至少使测试变得随机。目前重定向适用于 Safari@OSX 和 Chromium@Win,但不是在 IE11@Win 上。对我来说。我想明天或者当我费心启动另一台机器时,它就会自行修复。
更新:我尝试了更多方法。在我客户的办公室,根级别的 http->https 有效,但在 IE 中却无效,而是挂起了。但在 Opera 中可以。第二天 IE 也可以。在家里,我的 IE 也出现了同样的问题,但速度快了一天。两者都挂起了某种等待状态。
我之所以写了这么多关于加载失败的胡言乱语,是为了提示下一位读者,快速编辑-保存-重新加载循环可能不起作用,并随时准备一个以上的浏览器。