【问题标题】:How to except '/nova' route if I have 'any' route that matches with any request如果我有与任何请求匹配的“任何”路由,如何排除“/nova”路由
【发布时间】:2019-02-05 19:10:43
【问题描述】:

我将基于 laravel nova 制作自己的 CMS。现在我正在制作一个“页面”功能。我将把我的页面作为表pages 的行,其中将包含url 列。在我的routes/web.php 文件的末尾,我有与任何路线匹配的路线:

Route::get( .... );
Route::post( .... );
Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

myRoute方法中,我会捕获一个url并尝试在数据库中找到这个url的页面;一切正常,但是当我输入 <domain_of_my_site>/nova 进入管理面板时,我有 404。因为,nova 的路由包含在我的 route-for-any-request 之后。那么,如何解决呢?我怎么能把这个

Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

真的到底是什么?

【问题讨论】:

    标签: laravel laravel-nova


    【解决方案1】:

    我在路由文件中遇到了与通用 slug 类似的问题。我设法将 slug 的模式限制为字母数字字符(包括破折号、连字符和斜杠*),但排除了 Nova 路由(nova-apinova-vendor)以及管理面板的 Nova 路径(@987654323 @)。

    routes/web.php 文件如下所示:

    Route::get('/{page}', 'PageController@myRouter');
    

    以及app/Providers/RouteServiceProvider.php 文件中RouteServiceProvider{page} 的模式:

    public function boot()
    {
        Route::pattern('page', '^(?!nova|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');
    
        parent::boot();
    }
    

    *) 请注意,这种模式也允许像 /page/one/two 这样的 slug。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2016-10-08
      • 2010-12-06
      • 2020-04-14
      相关资源
      最近更新 更多