更改参数顺序时Laravel路由中出现404错误

时间:2018-12-11 12:55:21

标签: php laravel parameters routing http-status-code-404

我的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/properties 404(未找到)

我正在使用Laravel安装程序2.0.1版

1 个答案:

答案 0 :(得分:2)

由于您正在使用两个带有通用参数的路由,因此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参数与路线完美匹配。