Laravel 5.6 通配符路由在域中未按预期运行
Posted
技术标签:
【中文标题】Laravel 5.6 通配符路由在域中未按预期运行【英文标题】:Laravel 5.6 wildcard route not functioning as expected with domain 【发布时间】: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');
我哪里出错了?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Laravel 5.6 通配符路由在域中未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章