如何修复Laravel首页出现的404 NOT FOUND错误?
解决Laravel项目首页404 NOT FOUND错误
可能原因及对应解决办法
1. APP_URL未配置
从提供的.env配置来看,APP_URL=为空,这会导致Laravel生成URL、解析路由时出现异常。
- 解决:在
.env中配置对应项目的访问地址,比如本地访问地址为http://localhost/reward-app,则设置:
配置完成后执行缓存清理命令:APP_URL=http://localhost/reward-appphp artisan config:clear php artisan cache:clear
2. 未定义默认首页路由
检查routes/web.php文件,确认是否存在指向首页的路由配置,比如:
// 返回视图的基础路由 Route::get('/', function () { return view('welcome'); }); // 或者指向控制器方法的路由 Route::get('/', [HomeController::class, 'index']);
- 若没有上述路由,添加对应定义后清理路由缓存:
php artisan route:clear
3. 服务器重写规则异常
Apache环境
- 确认
mod_rewrite模块已启用,开启后重启Apache服务。 - 检查项目
public目录下的.htaccess文件是否存在且配置正确,默认Laravel的.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>
Nginx环境
- 检查Nginx配置文件,确保
try_files指令正确指向index.php,示例配置:
修改配置后重启Nginx服务。location / { try_files $uri $uri/ /index.php?$query_string; }
4. 缓存未清理
生产环境下Laravel会缓存配置、路由等内容,修改配置后未清理缓存可能导致异常:
- 执行以下命令清理所有缓存:
php artisan config:clear php artisan route:clear php artisan cache:clear php artisan view:clear
5. 服务器根目录指向错误
确认服务器的网站根目录是否指向Laravel项目的public文件夹,而非项目根目录。若指向项目根目录,会无法正确加载前端控制器index.php,进而出现404错误。
提供的环境信息
首页404截图

数据库截图

.env配置代码
APP_NAME=Reward-App APP_ENV=production APP_KEY=base64:t9Pl+P0jnbnmS2tNpEuh4CT+x+T6xZrKcDhGb1oOCJ4= APP_DEBUG=false APP_URL= LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=test3 DB_USERNAME=root DB_PASSWORD= BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME= MAIL_PASSWORD= MAIL_ENCRYPTION=ssl MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= HEADER_USER=rewardfsJGSA PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
内容的提问来源于stack exchange,提问作者atozcodes
相关产品推荐
相关产品推荐

