【问题标题】:Laravel wild card routing upto a particular levelLaravel 通配符路由到特定级别
【发布时间】:2018-02-21 14:34:12
【问题描述】:

我正在开发一个 Laravel 应用程序,并且对于应用程序的特定部分,我正在使用通配符路由。 route 设置如下所示。

Route::get('/learn/{path?}','LearnPageController@index')
       ->where('path', '.+');

因此,它捕获了学习后的所有 url 部分,即 url like

learn/something
learn/something/something
learn/something/something/something
learn/something/something/something/something
learn/something/something/something/something/something
.....

learn/ 之后的几乎所有内容

但我只想捕获 url 部分 最多 4 级,即

learn/something/something/something

任何超过4级的url都必须重定向到404页面。

我该怎么做?

【问题讨论】:

    标签: laravel url routing wildcard


    【解决方案1】:

    因为where 方法接受正则表达式。我在 regex101.com 上摆弄了一些东西:

    Route::get('/learn/{path?}','LearnPageController@index')
       ->where('path', '/^([^\/]+\/){0,2}[^\/]+$/');
    

    Link to regex101 fiddle

    查看上面链接中的测试,看看它是否符合您的需求。我只是使用导出方法将正则表达式复制+粘贴到您的 php 代码中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2015-10-12
      • 2014-06-29
      • 1970-01-01
      • 2021-05-12
      • 2014-12-01
      • 2014-08-19
      相关资源
      最近更新 更多