Вы всегда хотите убедиться, что статические маршруты определены перед подстановочными знаками, поскольку в противном случае маршрутизатор будет принимать статический маршрут в качестве вил-карты. Heres быстрый пример:
//This will work
Route::get('foo', ' [email protected]');
Route::get('{bar}', '[email protected]');
//In this order, foo will never get called
Route::get('{bar}', '[email protected]');
Route::get('foo', ' [email protected]');
При запуске добавить больше сегментов в свой путь, вы всегда хотите сохранить символы в задней части их соответствующих подгрупп. Так следует упорядочивать постепенно растущее дерево маршрутов.
//This is good
Route::get('foo', ' [email protected]');
Route::get('foo/bar', ' [email protected]');
Route::get('foo/{id}', '[email protected]');
Route::get('foo/bar/stuff', '[email protected]');
Route::get('foo/bar/{id}', '[email protected]');
Route::get('foo/{bar}/stuff', '[email protected]');
Route::get('foo/{bar}/{id}', '[email protected]');
В вашем случае, в частности, вы хотите, чтобы ваши маршруты организованы так, чтобы начать:
Route::get('/addClickBanner/{id_banner}','[email protected]');
Route::get('someStaticString/{main_category}/{slug}','[email protected]')->where('main_category', '^(?!SomeStaticString$).*');
вы имели в виду '-> где ('main_category',«^ (?! addClickBanner $). * '); '? Если 'id_banner' - это цифра, а' slug' - нет, вы можете просто ограничить 'id_banner' с помощью' [0-9] + ' –
Использование только параметров маршрута, например, в Route :: get ('/ {main_category}/{slug} '...) будет захватывать каждый uri, если uri явно не указан до этого маршрута. – Birdman
Вы должны пометить маршрут, как '/ {main_category}/{slug}', по каждому интересующему вас маршруту. Новый маршрут, например 'SomeStaticString', должен быть размещен над этим маршрутом. –