Joomla未强制SSL问题:旧2.5.28站点非HTTPS可访问
解决Joomla 2.5.28非HTTPS访问仍可打开的问题
兄弟,我碰到过不少Joomla老版本的这类问题,你目前的配置漏了关键一步——.htaccess里只做了www跳转,没强制所有HTTP请求转HTTPS,再加上Joomla 2.5的内置SSL强制是应用层面的跳转,服务器层面规则没跟上的话,全新浏览器(无缓存)访问HTTP时就会直接加载非加密内容,不会自动跳转到HTTPS。
给你一套完整的解决方案:
1. 调整.htaccess的重写规则顺序
把现有的www跳转规则调整到HTTPS强制跳转之后,确保所有HTTP请求先被转成HTTPS,再处理www统一化。修改后的规则如下:
# 先强制所有HTTP请求跳转到HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] # 再强制非www域名跳转到带www的版本 RewriteCond %{HTTP_HOST} ^blauwelint.nl [NC] RewriteRule ^(.*)$ https://www.blauwelint.nl/$1 [L,R=301,NC]
注意:重写规则的顺序很重要,必须先处理HTTPS强制,再处理www跳转,否则会出现部分HTTP请求漏跳转的情况。
2. 确认Joomla全局配置的SSL设置
虽然你已经开了强制全站SSL,但Joomla 2.5的配置要确保这两点:
- 进入后台「全局配置」→「站点」标签,「强制SSL」选择整个站点
- 「站点URL」和「安全URL」都设置为
https://www.blauwelint.nl,避免Joomla生成混合内容或错误的非HTTPS链接
3. 清除服务器及缓存插件缓存
如果你的站点用了缓存插件(比如Joomla自带的缓存或者第三方插件),或者服务器开启了OPcache、NGINX缓存等,记得清空这些缓存,避免旧的规则或配置被缓存导致不生效。
4. 验证规则是否生效
可以用curl命令测试(或者直接用全新的隐私窗口访问HTTP地址):
# 测试非www的HTTP地址 curl -I http://blauwelint.nl # 测试带www的HTTP地址 curl -I http://www.blauwelint.nl
正常情况下,这两个请求都会返回301 Moved Permanently,跳转目标是https://www.blauwelint.nl。
这样调整之后,不管用户用哪种方式访问(HTTP/HTTPS、带www/不带www),都会被强制跳转到https://www.blauwelint.nl,彻底解决全新浏览器能打开非HTTPS站点的问题。
内容的提问来源于stack exchange,提问作者Pieter-Jan
相关产品推荐
相关产品推荐

