如何解决Laravel(带Filament)部署到cPanel虚拟主机独立文件夹的异常?
解决Laravel+Filament虚拟主机部署的403及登录跳转问题
1. 根目录(public_html/develop)添加.htaccess配置
你把整个Laravel项目放在public_html/develop目录下,而Laravel的入口文件是public/index.php,所以需要在develop目录下创建/修改.htaccess,将所有请求转发到public子目录:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
这个配置会让访问/develop时自动指向/develop/public,解决直接访问根目录返回403的问题(原因为目录无默认索引文件)。
2. 确保public目录下的.htaccess正确
Laravel默认的public/.htaccess需保持路由重写正常,内容如下:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
若该文件被部署流程覆盖,直接复制上述内容替换即可。
3. 修正.env文件的关键配置
确保public_html/develop/.env里的以下配置准确:
APP_URL=https://你的域名/develop(必须包含/develop路径,否则Laravel生成的路由、资源URL会错误)SESSION_DOMAIN=你的域名(需与访问地址一致,否则会话无法保存,导致登录后无跳转)APP_DEBUG=false(生产环境建议关闭,避免泄露敏感信息)
4. 处理Filament登录跳转问题
登录后仅刷新无跳转通常由会话或路由缓存问题导致:
- 在部署脚本中加入
php artisan config:clear、php artisan route:clear命令,清除配置与路由缓存 - 确保
storage/framework/sessions目录有写入权限,虚拟主机上通常设置为755或775(根据主机规则调整),否则会话无法持久化,登录状态无法维持
5. 更新GitHub Actions部署脚本
将以下命令加入部署步骤,确保每次部署完成必要的配置与权限设置:
# 清除缓存 php artisan config:clear php artisan route:clear php artisan view:clear # 设置目录权限 chmod -R 755 storage bootstrap/cache chmod -R 775 storage/framework/sessions
完成以上操作后,重新推送develop分支触发部署,即可解决:
- 访问
/develop不再返回403,直接进入Laravel应用 - Filament登录后正常跳转到后台页面
内容的提问来源于stack exchange,提问作者Lucas Bacciotti
相关产品推荐
相关产品推荐

