2017-09-13 110 views
1

我有一个Laravel我正在使用的应用程序和我使用通配符路由的应用程序的特定部分。 路线设置看起来像这样。Laravel通配符路由到一个特定的水平

Route::get('/learn/{path?}','[email protected]') 
     ->where('path', '.+'); 

因此,它捕获进来后学即所有的URL部分,网址等之后learn/

自带

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

几乎一切,但我想捕捉URL部分只达到4级即

learn/something/something/something 

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

我该怎么做?

回答

1

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

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

Link to regex101 fiddle

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

+0

不错。谢啦。这是我需要的。 – besrabasant