XAMPP虚拟主机(vhosts)异常重定向至HTTPS问题求助
解决自定义域名访问时被强制HTTPS重定向的问题
你遇到的这个情况很典型,除了Edge外其他浏览器都跳HTTPS,主要是.dev域名的特殊性和浏览器的安全机制在起作用,咱们一步步来排查解决:
1. 先处理浏览器的HSTS强制规则
.dev是Google注册的正式顶级域名,Chrome、Firefox、Safari这些主流浏览器默认会强制所有.dev域名使用HTTPS,这是通过HSTS(HTTP严格传输安全)机制实现的,哪怕你本地没配置SSL也会自动跳转。
解决方法:
- Chrome/Opera: 在地址栏输入
chrome://net-internals/#hsts,找到「Delete domain security policies」,输入xxx.dev后点击「Delete」,清除该域名的HSTS缓存。 - Firefox: 地址栏输入
about:config,搜索network.stricttransportsecurity.preloadlist,临时把它设为false(测试完如果需要可以改回来);或者直接清除浏览器的「Cookie和站点数据」,确保选中包含站点权限的选项。 - Safari: 打开「偏好设置」→「隐私」→「管理网站数据」,搜索
xxx.dev并删除对应的条目。
2. 检查项目代码里的强制HTTPS逻辑
你的项目(2018_xxx.de/public)里可能自己加了重定向规则,比如:
- PHP代码里写了强制跳HTTPS的
header函数 .htaccess文件里用mod_rewrite做了全局重定向
打开项目根目录的.htaccess文件,看看有没有类似这样的规则,如果有,暂时注释掉(加#)或者删除:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3. 排查Apache的SSL模块是否意外开启
如果XAMPP的Apache启用了SSL模块,可能会触发全局的HTTPS相关规则。打开XAMPP的httpd.conf文件,检查下面这行是否被注释(前面有#):
# LoadModule ssl_module modules/mod_ssl.so
如果没有#,说明SSL模块是开着的,你可以注释掉它,然后重启Apache服务。不过注意,这会影响所有需要SSL的站点,所以优先用前面的方法,这个作为备选。
4. 最省心的方案:更换测试域名后缀
既然.dev被浏览器强制HTTPS,不如直接换个不会被强制的后缀,比如.test或者.local:
- 修改
httpd-vhosts.conf里的ServerName为xxx.test - 修改
hosts文件里的映射为127.0.0.1 xxx.test - 重启Apache,清除浏览器缓存后访问
http://xxx.test,应该就不会跳HTTPS了。
内容的提问来源于stack exchange,提问作者Schnickelfritz
相关产品推荐
相关产品推荐

