php #laravel #routes
#php #laravel #маршруты
Вопрос:
Я внес некоторые изменения в web.php
Я изменил маршрут с этого
Route::get('/location/{location}', 'LocationController@show')
->name('location.details');
к этому
Route::get('/{location?}', 'LocationController@show')
->name('location.details');
Теперь при посещении /admin
или /login
выдается ошибка 404:
404 К сожалению, страница, которую вы ищете, не найдена.
до того, как я внес изменения, все работало.
Что не так с моей маршрутизацией?
Маршрут: web.php
Route::get('/', 'StartpageController@index')->name('startpage');
Route::prefix('admin')->group(function ()
{
Route::name('admin.')->group(function ()
{
Route::middleware('auth')->group(function ()
{
Route::get('/', function ()
{
return view('admin');
});
Route::resource('location','AdminLocationController');
});
});
});
Route::get('/{location?}', 'LocationController@show')->name('location.details');
Auth::routes();
Контроллер: LocationController.php
class LocationController extends Controller
{
public function show(Locations $location)
{
return view('location.show', compact('location'));
}
}
Ответ №1:
Ваш маршрут Route::get('/{location?}'
улавливает все запросы. /login и /admin удовлетворяют этому маршруту.
Либо переопределите ее (откатите изменение), либо поместите этот маршрут последним в свой web.php
, либо добавьте ограничение на переменную route
Route::get('/{location?}', 'LocationController@show')->whereNumber('location')->name('location.details');
Комментарии:
1. Чтобы поместить этот маршрут последним, он должен работать. Спасибо. Есть какие-либо недостатки?
2. @lyze нет, не совсем, просто подумайте, что он попытается перехватить любой вызов, который его удовлетворяет.