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 通配符路由在域中未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 网络路由变量未按预期返回

SVG 在 Firefox 中未按预期呈现,即

自动填充在 Excel 中未按预期工作

@State var 在 LazyVGrid 中未按预期更新

在 Postgres 13 中未按预期工作的表设置默认权限

PYQT5 拖放行在 TableWidget 中未按预期工作