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

Laravel 5.8:如何在核心Router.php文件中添加自定义匿名路由

解决Laravel 5.8中无法修改核心Router.php添加路由的问题
  • 别碰vendor目录的核心文件
    /vendor下的文件是Composer管理的依赖包,每次执行composer install或composer update都会覆盖所有修改,而且修改核心文件完全违背Laravel的设计规范,后续维护只会给自己挖坑。

  • 直接在框架自带的路由文件里加匿名路由
    Laravel的路由本来就该写在routes/目录下的文件里,比如routes/web.php(前端路由)或routes/api.php(接口路由),直接往里加就行:

    // routes/web.php
    Route::get('/my-custom-route', function () {
        return '这是自定义匿名路由的返回内容';
    });
    
  • 要扩展路由功能?用路由宏或自定义路由文件
    如果需要自定义路由逻辑,不用改核心Router,试试这两种方法:

    1. 路由宏扩展Router功能
      打开App\Providers\AppServiceProvider.php,在boot方法里定义宏:
      use Illuminate\Routing\Router;
      
      public function boot()
      {
          Router::macro('customRoute', function ($uri, $callback) {
              // 这里可以自定义路由规则,比如强制加中间件、设置前缀等
              return $this->get($uri, $callback)->middleware('web');
          });
      }
      
      之后在路由文件里直接用这个宏:
      Route::customRoute('/special-route', function () {
          return '通过路由宏创建的自定义路由';
      });
      
    2. 加载自定义路由文件
      打开app/Providers/RouteServiceProvider.php,在map方法里新增自定义路由的加载逻辑:
      public function map()
      {
          $this->mapApiRoutes();
          $this->mapWebRoutes();
          // 加载自定义路由文件
          $this->mapCustomRoutes();
      }
      
      protected function mapCustomRoutes()
      {
          Route::prefix('custom')
              ->middleware('web')
              ->namespace($this->namespace)
              ->group(base_path('routes/custom.php'));
      }
      
      然后新建routes/custom.php文件,在里面写匿名路由:
      Route::get('/test', function () {
          return '自定义路由文件里的匿名路由';
      });
      

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:35:01