多个可选参数不适用于 laravel 5.3 路由

Multiple optional parameters not working on laravel 5.3 route

我在 web.php 中有以下路线,第一条路线始终有效,但如果我使用 url 之类的

,第二条路线则无效
ads/mobiles

然后函数 check_if_category 执行正常。但我用 url 喜欢

ads/lahore/mobiles

在这种情况下,它会重定向到 404 页面。

Route::get('ads/all', 'AdControllerWithoutAuth@all_ads')->name('route_all_ads');
Route::get('ads/{location?}{category?}{keyword?}', 'Categories@check_if_category')->name('route_f_category_page');

我也这样工作过

Route::get('ads/all', 'AdControllerWithoutAuth@all_ads')->name('route_all_ads');
//Route::get('ads/{location?}', 'Categories@check_if_category')->name('route_f_category_page');
//Route::get('ads/{location?}{category?}', 'Categories@check_if_category')->name('route_f_category_page');
Route::get('ads/{location?}{category?}{keyword?}', 'Categories@check_if_category')->name('route_f_category_page');

但没有成功。提前感谢您的帮助。

使用separator

Route::get('ads/{location?}/{category?}/{keyword?}', 'Categories@check_if_category')->name('route_f_category_page');

/ 添加到路由 URI:

Route::get('ads/{location?}/{category?}/{keyword?}', 'Categories@check_if_category')->name('route_f_category_page');

您需要在这些参数之间添加 / 否则 Laravel 会将它们视为一个长字符串。

Route::get('ads/{location?}/{category?}/{keyword?}', 'Categories@check_if_category')->name('route_f_category_page');