【问题标题】:Laravel 5.6 wildcard route not functioning as expected with domainLaravel 5.6 通配符路由在域中未按预期运行
【发布时间】:2020-11-29 22:51:03
【问题描述】:

我正在使用 Laravel 5.6 并尝试在我的 Web 文件中创建一个 laravel 路由,以便任何具有以下 URL:/assets/* 的内容都将通过我的控制器。例如,/assets/page1/page2/assets/js/somefile,由于某种原因,它仅在我在 URL 中输入以下内容时才有效:/assets/*

Route::get('/assets/*', 'AssetsController@proxy');

我哪里出错了?

【问题讨论】:

    标签: laravel laravel-5 wildcard laravel-routing


    【解决方案1】:
    Route::get('/assets/{catchAll}', 'AssetsController@proxy');
    

    路由中通配符的语法是否正确

    【讨论】:

    • 太棒了,但这仅适用于/assets/ 之后的一件事,例如/assets/test,但根据我最初的问题 - 可能是多个:/assets/page1/page2,可能有一个 URL 有一个,或者另一个包含多个 URL 的 URL。
    【解决方案2】:

    这不是您定义通配符路由的方式。你必须定义一个参数:

    Route::get('assets/{asset}', ...);
    

    这只会给您一个段,因此您需要为此参数定义一个模式,以便它实际上可以捕获路径的其余部分:

    Route::get('assets/{asset}', ...)->where('asset', '.*');
    

    Laravel 5.6 Docs - Routing - Route Parameters

    Laravel 5.6 Docs - Routing - Regular Expression Constraintswhere

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 2021-05-12
      • 1970-01-01
      • 2021-10-03
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 2016-09-14
      相关资源
      最近更新 更多