更改参数顺序的 Laravel 路由中出现 404 错误
Posted
技术标签:
【中文标题】更改参数顺序的 Laravel 路由中出现 404 错误【英文标题】:404 error in Laravel routing with changing parameter order 【发布时间】:2019-05-12 11:23:24 【问题描述】:我的 Laravel 路由有一个奇怪的问题。当我使用这个网址时,一切都很完美:
Route::get('properties/product', 'ProController@getpro');
但是当我想像下面这样更改顺序时,我得到一个 404 not found 页面:
Route::get('product/properties', 'ProController@getpro');
有什么问题?
http://127.0.0.1:8000/product/pizza-lake-dariusbury/properties404(未找到)
我正在使用 Laravel 安装程序版本 2.0.1
【问题讨论】:
没有laravel 2.0.1
版本
@AyazShah laravel 安装程序版本我的意思是
您是否声明了另一个ProController
路由?
@Laerte 是的,我还有一个只需要两个参数的参数 :: Route::get('prod?/prod_size?', 'ProController@name')
@Laerte alles ok
【参考方案1】:
由于您使用了两个带有通用参数的路由,Laravel 可能无法将 URL 与路由匹配。例如:/product/1/properties
,可以完美契合这个prod?/prod_size?
。
要解决这个问题,我建议您在路由中添加一些前缀,以识别它们:
Route::get('routename1/product/properties', 'ProController@getpro');
Route::get('routename2/prod?/prod_size?', 'ProController@name');
那么routename1/1/properties
永远不会适合routename2/prod?/prod_size?
。
这样 Laravel 就可以完美匹配路由的 URL 参数了。
【讨论】:
以上是关于更改参数顺序的 Laravel 路由中出现 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8:如何使隐式模型绑定路由参数可选而不是抛出 404?
在 Laravel 应用程序上使用 AWS 托管的默认“/”以外的所有路由都出现 404 错误(路由在本地环境中工作)