更改参数顺序的 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 错误(路由在本地环境中工作)

Laravel中的一些路由问题,老是报404错误

首次配置路由出现404的问题

如果路由不在子域中,Laravel 子域路由重定向到 404

laravel 路由和 404 错误