Laravel首页白屏/404/500的根源是环境配置链中断:需确认Web服务器root指向public目录、启用display_errors和APP_DEBUG、清除路由与配置缓存、赋予storage/bootstrap/cache写权限、验证Apache/Nginx伪静态规则生效。

刚装完Laravel却打不开首页,浏览器显示白屏、404或500错误,不是代码写错了,而是环境配置链上某个环节断开了——从Web服务器根目录指向,到PHP调试开关,再到路由缓存,每一步都可能卡住请求。
确认Web服务器是否正确指向public目录
这是90%首页无法访问的根源:Apache/Nginx把整个项目根目录当网站根,而不是public子目录。
Apache用户检查虚拟主机配置中DocumentRoot是否为/your-project-path/public,同时确认AllowOverride All;Nginx用户打开站点配置,找到root指令,确保它明确指向/your-project-path/public,不是上层目录。
改完配置后,Apache执行a2enmod rewrite并重启服务,Nginx执行nginx -s reload(不是restart)。
【关键提醒】php artisan serve已默认指向public,但仅限开发调试——上线必须用Web服务器,不能依赖它。
启用PHP错误显示与Laravel调试模式
白屏无提示?大概率是PHP错误被静默吞掉了。
方法一:修改php.ini,将display_errors = Off改为display_errors = On,同时确认error_reporting = E_ALL;
方法二:直接编辑.env文件,把APP_DEBUG=false改为APP_DEBUG=true;
改完立刻刷新页面——如果出现红色报错,说明问题在代码或配置层;如果仍白屏,说明请求根本没进Laravel,要回头检查Web服务器转发规则或权限问题。
清除路由与配置缓存
Laravel 8+默认开启路由缓存,新写的路由或修改后的routes/web.php不会自动生效。
第一步:进入项目根目录终端;
第二步:运行php artisan optimize:clear;
第三步:再执行php artisan config:clear && php artisan cache:clear;
这三步做完,所有缓存清空,路由表重建,修改立即可见。不执行这步,哪怕你把Route::get('/', ...)改成return 'OK'也永远刷不出来。
检查storage与bootstrap/cache写权限
Linux/macOS系统下,Web服务器进程(如www-data或nginx)若无权往storage和bootstrap/cache写文件,Laravel连日志都记不了,直接500。
运行:chmod -R 775 storage bootstrap/cache;
再运行:chown -R www:www storage bootstrap/cache(宝塔面板用户注意组名是www,不是apache);
Windows用户通常无需操作,但若用WSL或Docker则同样需检查。
验证伪静态规则是否生效
即使根目录设对了,缺少重写规则也会导致除/以外的所有路由返回404。
Apache用户确认public/.htaccess存在且内容完整(含RewriteEngine On及两条RewriteCond);若被覆盖,重新复制Laravel官方提供的标准内容;
Nginx用户检查location /块中是否有try_files $uri $uri/ /index.php?$query_string;——这是唯一推荐写法,禁用网上流传的rewrite ^/(.*)$ /index.php? last等过时规则。


















