小皮面板(phpStudy)设置 HTTPS 重定向有两条路:证书配好后优先打开面板自带的「强制 HTTPS」开关,1 分钟生效;需要精细控制时,直接改站点的 vhost 配置文件,加一条 301 跳转即可。前提是 SSL 证书已部署、443 端口已放行,否则跳过去就是打不开或死循环。
小皮面板怎么一键开启强制 HTTPS 跳转?
结论:在「网站」列表里点站点右侧的「管理」→「SSL」,部署证书后勾选「强制 HTTPS」,保存并重启 Web 服务即可。
具体步骤:打开小皮面板 → 左侧「网站」→ 找到目标站点点「管理」→ 切到「SSL」标签 → 粘贴或上传证书(.pem/.crt 与 .key)→ 在「强制 HTTPS」处打勾 → 保存。配置写入后需要在面板首页或「软件管理」里重启 Nginx / Apache,改动才生效。
两个前置检查:一是在「安全」或防火墙里放通 443 端口,云服务器还要在服务商安全组里放通;二是域名解析已生效。面板的整体写法和同类环境一致,写过宝塔面板强制 HTTPS 教程的站长基本可以照搬思路。
改完用命令验证:curl -I http://你的域名,返回 301 且 Location 指向 https:// 就算成功。
Nginx 站点:HTTP 跳转 HTTPS 的规则怎么写?
结论:最稳的写法是在 80 端口的 server 块里用 return 301 https://$host$request_uri;,比 rewrite 更简洁也不丢参数。
phpStudy V8 的 Nginx 站点会生成两个 vhost 文件,路径大致为 phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts\(中间目录名随实际安装的 Nginx 版本变化),文件名形如 你的域名_80.conf 和 你的域名_443.conf。打开 _80.conf,把内容改成:
server {
listen 80;
server_name gj0.com www.gj0.com;
return 301 https://$host$request_uri;
}
保存后重载 Nginx。注意不要误改 _443.conf,那里是真正的站点逻辑和证书配置。
如果你一定要用 rewrite,等价写法是:
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
permanent 对应 301,redirect 对应 302,跳转请用 301,避免权重分散。
Apache 站点怎么做 HTTPS 重定向?
结论:Apache 环境优先用站点根目录的 .htaccess,改完即生效,不用重启。
在网站根目录新建或编辑 .htaccess,加入:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
前提是 Apache 已开启 mod_rewrite 并允许 .htaccess 生效(AllowOverride All),面板默认一般已打开。也可直接改 phpstudy_pro\Extensions\Apache2.4.39\conf\vhosts\ 下对应站点的 vhost,在 <VirtualHost *:80> 里写 RewriteCond 和 RewriteRule,效果相同但要重启 Apache。
开了 HTTPS 跳转却提示「重定向次数过多」怎么办?
结论:绝大多数是「判断 HTTPS 的条件失效」造成的死循环,多出现在套了 CDN 或反向代理之后,要改判 X-Forwarded-Proto 请求头。
当 CDN 回源走 HTTP 时,源站看到的永远是 80 请求,%{HTTPS} off 恒成立,于是不断 301 到自己,浏览器就报 ERR_TOO_MANY_REDIRECTS。Nginx 里改成:
if ($http_x_forwarded_proto != "https") {
return 301 https://$host$request_uri;
}
Apache 对应把条件改成 RewriteCond %{HTTP:X-Forwarded-Proto} !https。
其它两个高频原因:证书链不完整导致回源握手失败;301 被浏览器缓存,配置已改但浏览器仍在跳旧地址——用无痕窗口或 curl 测,别用缓存的标签页判断。测通了再清理浏览器缓存。
另外提醒:301 是永久重定向,浏览器会长期缓存,调试阶段可先写 302,确认全站不再循环后再改成 301。
总结一下:小皮面板设置 HTTPS 重定向,先确认证书和 443 端口,能用面板的「强制 HTTPS」开关就别手写配置;需要手动改时,Nginx 在 _80.conf 里 return 301,Apache 用 .htaccess 加 RewriteCond %{HTTPS} off;套 CDN 的场景必须改用 X-Forwarded-Proto 判断,最后用 curl -I 或无痕窗口验证 301 生效。