Laravel+Filament部署到cPanel后/admin路由404问题求助
解决Laravel+Filament部署到cPanel后/admin路由404的问题
以下是排查和解决的关键步骤:
1. 确认cPanel文档根目录配置
cPanel默认将public_html设为网站根目录,但Laravel需要把public目录作为文档根:
- 登录cPanel,找到「域名」或「网站」管理模块
- 编辑你的域名,将文档根目录修改为
public_html/public(如果Laravel项目直接放在public_html下) - 保存配置后刷新网站测试
2. 重置路由缓存
部署后本地的路由缓存可能和服务器环境不匹配,执行以下命令(在cPanel终端或SSH中,切换到项目根目录):
php artisan route:clear php artisan route:cache
3. 检查Filament路由配置
确认Filament的路由前缀是否为admin:
- 打开项目根目录下的
config/filament.php - 查找
path配置项,确保值为'admin' - 如果修改了配置,记得执行
php artisan config:cache生效
4. 修复public目录的.htaccess文件
确保public/.htaccess是Laravel默认配置,若文件丢失或被修改,重新创建:
<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>
同时确认主机商已启用mod_rewrite模块(cPanel通常默认开启,若未开联系主机商)
5. 清除应用缓存与配置缓存
执行以下命令确保.env配置正确加载:
php artisan cache:clear php artisan config:clear php artisan config:cache
6. 修复文件权限
确保storage和bootstrap/cache目录权限正确,避免Laravel无法写入缓存:
chmod -R 755 storage bootstrap/cache chown -R 你的cPanel用户名:你的cPanel用户名 storage bootstrap/cache
替换命令中的「你的cPanel用户名」为实际用户名
7. 重新安装Filament依赖
若部署时依赖未完整安装,执行:
composer install --optimize-autoloader --no-dev
内容的提问来源于stack exchange,提问作者Leul Webshet
相关产品推荐
相关产品推荐

