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配置文件:
- 登录WHM面板,找到「Apache配置」→「编辑虚拟主机配置」
- 找到
staging.example.com对应的虚拟主机块 - 把
DocumentRoot的路径从/home/your_username/public_html/staging改成/home/your_username/public_html/staging/current(同样,如果是框架应用要加/public) - 保存配置后,重启Apache服务
额外注意事项
- 确认Envoyer部署完成后,
current符号链接确实指向了最新的release文件夹(可以通过SSH执行ls -l public_html/staging/current查看) - 检查文件夹权限:确保Apache运行用户(通常是
nobody或apache)有访问current和releases目录下文件的权限 - 如果你用的是需要
public目录的框架,绝对不要直接指向current,必须指向current/public,否则会暴露.env等敏感文件
内容的提问来源于stack exchange,提问作者prakashchhetri
相关产品推荐
相关产品推荐

