Route::get('catalog/{mode?}', 'CatalogController@index');
Route::get('catalog/?mode=setting', 'SettingController@index');
Route::get('catalog/{mode?}', 'CatalogController@index');
у тебя все же используется переменная в качестве параметра роутера(пути), знак вопроса говорит нам о том что он опционален, может быть, а может и не быть. Ну и да по факту это часть get запросов.request()
:***
$mode = request()->mode;
***