You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10中/about-us路由返回404 NOT FOUND的解决方法

Laravel 10 中 /about-us 路由返回404的排查与解决

环境信息

  • PHP版本:8.2.4
  • Laravel版本:10

问题描述

已在web.php中定义/about-us路由,但访问时始终返回404 NOT FOUND错误。其他路由正常运行,已检查数据库TextWidget表存在key为about-page且active=1的记录,同时清理了路由缓存并重启开发服务器,问题仍未解决。

路由代码:

Route::get('/about-us', [SiteController::class, 'about'])->name('about-us');

SiteController对应方法:

<?php

namespace App\Http\Controllers;

use App\Models\TextWidget;
use Illuminate\Http\Request;
use Illuminate\View\View;

class SiteController extends Controller
{
    public function about(): View
    {
        $widget = TextWidget::query()
            ->where('key', '=', 'about-page')
            ->where('active', '=', 1)
            ->first();

        return view('about', compact('widget'));
    }
}

排查与解决步骤

1. 检查路由匹配顺序与覆盖问题

  • 查看web.php中该路由的位置,确保它在**通配符路由(如Route::get('/{slug}', ...))**之前。Laravel路由按定义顺序匹配,若通配符路由在前,会优先拦截/about-us请求。
  • 执行命令php artisan route:list,在输出中确认/about-us路由存在,且对应的控制器、方法、请求方法均正确。

2. 彻底清理路由缓存

开发环境下若之前生成过路由缓存,修改路由后必须清理:

php artisan route:clear

注意:开发环境不建议使用php artisan route:cache,频繁修改路由时会导致缓存与实际路由不一致;生产环境使用缓存后,需确保所有路由均使用控制器类(不能用闭包路由)。

3. 验证服务器配置(生产环境)

若使用Nginx/Apache,需确保请求正确转发到Laravel入口文件:

  • Nginx:配置文件中需包含以下规则:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
  • Apache:确认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>
    

4. 检查控制器与视图的路径/命名

  • 确认web.php顶部已正确引入控制器:
    use App\Http\Controllers\SiteController;
    
  • 检查SiteController.php是否在app/Http/Controllers目录下,文件名大小写是否正确(Linux系统区分大小写)。
  • 确认视图文件resources/views/about.blade.php存在,文件名大小写与return view('about', ...)中的名称一致。

5. 排查中间件拦截

  • 查看该路由是否绑定了特殊中间件,可临时移除中间件测试请求是否正常。
  • 检查全局中间件(app/Http/Kernel.php中的$middleware数组),是否有逻辑导致请求被拦截或重定向。

6. 确认请求URL格式

确保访问的URL是http://your-domain/about-us,而非带尾部斜杠的http://your-domain/about-us/(虽然Laravel默认会重定向,但服务器配置异常时可能导致404)。

内容的提问来源于stack exchange,提问作者Harinda Vishwantha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:54:57