Страница входа в Laravel не найдена

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 нет, не совсем, просто подумайте, что он попытается перехватить любой вызов, который его удовлетворяет.