phpEnv 默认不启用 HTTPS 重定向,需在站点 vhost 配置中新增独立的 80 端口 server 块并使用 return 301 跳转至 HTTPS,确保已正确配置 443 端口 SSL 证书且路径使用正斜杠,最后通过 nginx -t 验证并重启服务。

phpEnv 默认不自动启用 HTTPS 重定向,必须手动在 Nginx 配置中添加 return 301 规则,否则 HTTP 请求会继续明文响应,存在安全与 SEO 风险。
确认 phpEnv 的 Nginx 配置文件位置
phpEnv 是 Windows 下的集成环境(类似 XAMPP),其 Nginx 配置通常位于:phpEnv
ginxconfhost 目录下,每个站点对应一个 .conf 文件(如 localhost.conf)。不要修改 nginx.conf 主文件,避免影响全局;只改对应站点的 vhost 配置。
常见错误:在错误路径下编辑(比如改了 Apache 的 .htaccess),或在未启用 SSL 的 server 块里硬加 return 301 https://...,导致跳转后无法加载证书而报 ERR_CONNECTION_CLOSED。
- 先确保该站点已成功配置 HTTPS:443 端口 server 块中包含
ssl_certificate和ssl_certificate_key,且证书文件路径为绝对路径(如C:/phpEnv/nginx/ssl/localhost.crt) - Windows 路径中反斜杠
必须写成正斜杠/或双反斜杠\,否则 Nginx 启动失败 - 证书权限无需特别处理(Windows 下无读取限制),但文件不能被其他程序占用(如用记事本直接编辑保存后没关闭)
添加独立的 80 端口 server 块并使用 return 301
在站点的 vhost 配置文件末尾新增一个仅监听 80 端口的 server 块,核心是隔离 HTTP 和 HTTPS 处理逻辑。不能把 return 301 写进 443 块里,也不能用 rewrite 替代 —— 后者在 POST 请求时可能触发两次跳转甚至丢数据。
正确写法示例:
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
-
$server_name比$host更稳妥:它取自server_name指令值,不会被恶意构造的 Host 头污染 - 不要写
ssl on;或任何 ssl_* 指令到这个 80 块里,Nginx 会直接报错退出 - 若需支持 IPv6,可加
listen [::]:80;,但本地开发一般不需要
验证配置并重启服务
phpEnv 自带「重启 Nginx」按钮,但点击前必须人工验证语法,否则服务可能起不来且无提示。
- 打开命令行(管理员权限非必需,但确保路径可访问),进入
phpEnv ginx目录,执行:nginx -t - 若输出
nginx: configuration file C:/phpEnv/nginx/conf/nginx.conf test is successful,说明语法通过 - 再点 phpEnv 界面的「重启 Nginx」,或手动运行:
nginx -s reload - 测试:浏览器访问
http://localhost/xxx.php,应跳转至https://localhost/xxx.php,状态码为 301(可用 F12 → Network 查看)
容易忽略的一点:Chrome 等浏览器对本地 localhost 的 HSTS 策略较宽松,但若你曾用过真实域名测试并启用了 Strict-Transport-Security 头,后续即使改回 HTTP 也可能被强制跳转 —— 此时需清空浏览器 HSTS 缓存(chrome://net-internals/#hsts)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











