WordPress子URL在Firefox中未跳转HTTPS,Chrome正常问题求助
解决Chrome能跳转子URL到HTTPS但Firefox不行的问题
先给你捋清楚问题根源:你只改了WordPress后台的域名设置,但默认的.htaccess规则没覆盖子路径的HTTPS强制跳转,再加上两款浏览器对缓存、HTTPS升级的处理逻辑不同,才出现了这种差异。
第一步:确认WordPress后台设置是否正确
先去WordPress后台「设置→常规」里再核对一遍:
- 站点地址(URL):必须是
https://www.example.com - 主页地址(URL):同样要设为
https://www.example.com
确保两个地址完全一致,没有拼写错误。
第二步:修改.htaccess文件,补全强制跳转规则
默认的WordPress .htaccess只负责处理站点路由,没管HTTPS和www的统一跳转。你需要把HTTPS+www的跳转规则放在WordPress规则前面,这样所有请求(包括子路径)都会先被强制转到HTTPS的www域名。
替换你的.htaccess内容为下面的代码(记得把example.com换成你的真实域名):
# 强制跳转到HTTPS + www域名 <IfModule mod_rewrite.c> RewriteEngine On # 把非www域名跳转到www+HTTPS RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] # 把HTTP的www请求跳转到HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> # 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
第三步:处理Firefox的缓存问题
Firefox可能缓存了旧的HTTP请求记录,导致新规则不生效。你可以:
- 用Firefox隐私窗口(快捷键Ctrl+Shift+P)测试
www.example.com/abc,看是否能正常跳转 - 如果还是不行,手动清除缓存:「设置→隐私与安全→清除数据」,勾选「缓存」后完成清除
可选:添加HSTS头强化HTTPS跳转(推荐)
为了彻底避免这类问题,可以在.htaccess里添加HSTS头(放在HTTPS跳转规则后面即可):
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS </IfModule>
这个头会告诉浏览器:未来1年内,访问该域名及其所有子域名都必须用HTTPS,从根源上杜绝HTTP访问的可能。
为什么Chrome能行而Firefox不行?
Chrome有自动HTTPS升级的机制(比如内置HSTS列表或自动缓存跳转记录),而Firefox对这类场景的缓存逻辑更严格,没触发自动升级。补全.htaccess规则后,就能统一两款浏览器的跳转行为了。
内容的提问来源于stack exchange,提问作者Rizwi
相关产品推荐
相关产品推荐

