You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel通过Envoyer部署至WHM/Cpanel的子域名配置问题

解决Envoyer部署后staging子域名无法正确指向应用的问题

我之前在WHM/cPanel环境下用Envoyer部署PHP应用时踩过完全一样的坑,给你几个亲测有效的解决方案:

方案1:直接修改子域名的文档根目录(最推荐)

这是最简单的方法,不用碰配置文件,通过cPanel界面就能搞定:

  • 登录你的cPanel面板,找到「子域名」工具
  • 找到staging.example.com对应的条目,点击「管理」按钮
  • 在「文档根目录」输入框里,把原来的public_html/staging改成public_html/staging/current(重要提醒:如果你的应用是Laravel这类需要指向public目录的框架,要改成public_html/staging/current/public,别漏了最后的public)
  • 保存设置,清空浏览器缓存后访问staging.example.com测试

方案2:用.htaccess转发请求

如果因为权限限制没法修改子域名的文档根,可以在public_html/staging文件夹里新建(或修改).htaccess文件,添加以下规则:

RewriteEngine On
# 把所有请求转发到current目录
RewriteRule ^(.*)$ current/$1 [L]

如果你的应用本身有.htaccess(比如Laravel的public目录下的),要确保这个根目录的.htaccess不会和应用内的规则冲突,必要时可以调整规则顺序。

方案3:修改Apache虚拟主机配置(适合有WHM权限的用户)

如果你能直接编辑Apache配置文件:

  1. 登录WHM面板,找到「Apache配置」→「编辑虚拟主机配置」
  2. 找到staging.example.com对应的虚拟主机块
  3. 把DocumentRoot的路径从/home/your_username/public_html/staging改成/home/your_username/public_html/staging/current(同样,如果是框架应用要加/public)
  4. 保存配置后,重启Apache服务

额外注意事项

  • 确认Envoyer部署完成后,current符号链接确实指向了最新的release文件夹(可以通过SSH执行ls -l public_html/staging/current查看)
  • 检查文件夹权限:确保Apache运行用户(通常是nobody或apache)有访问current和releases目录下文件的权限
  • 如果你用的是需要public目录的框架,绝对不要直接指向current,必须指向current/public,否则会暴露.env等敏感文件

内容的提问来源于stack exchange,提问作者prakashchhetri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:36:41