PHP/Error

Laravel 컨트롤러가 있는데 404 에러가 날 때

DSeung 2022. 8. 19. 14:48

라라벨로 개발을 하다 보면 나는 분명 제대로 컨트롤러를 생성하고 라우팅 설정을 맞췄는데 

404 에러가 발생해 벙찌게 된 적이 있을 것입니다,

 

이상하다.. 나는 분명 컨트롤러랑 라우팅 설정 잘 했는데??

원인은 라우팅 설정 파일 안에 있습니다. web.php

 

아래는 정상적으로 행동하고

...

Route::get('products/excel', [ProductController::class, 'excel'])->name('products.excel');
Route::get('/products', [ProductController::class, 'index'])->name('products.index');
Route::get('/products/create', [ProductController::class, 'create'])->name('products.create');
Route::post('/products/store', [ProductController::class, 'store'])->name('products.store');
Route::get('products/{product}',[ProductController::class, 'show'])->name("products.show");
Route::get('products/{product}/edit', [ProductController::class, 'edit'])->name("products.edit");
Route::patch('products/{product}', [ProductController::class, 'update'])->name('products.update');
Route::delete('products/{product}', [ProductController::class, 'destroy'])->name('products.destroy');

...

아래는 404로 행동합니다.

...

Route::get('/products', [ProductController::class, 'index'])->name('products.index');
Route::get('/products/create', [ProductController::class, 'create'])->name('products.create');
Route::post('/products/store', [ProductController::class, 'store'])->name('products.store');
Route::get('products/{product}',[ProductController::class, 'show'])->name("products.show");
Route::get('products/{product}/edit', [ProductController::class, 'edit'])->name("products.edit");
Route::patch('products/{product}', [ProductController::class, 'update'])->name('products.update');
Route::delete('products/{product}', [ProductController::class, 'destroy'])->name('products.destroy');
Route::get('products/excel', [ProductController::class, 'excel'])->name('products.excel');

...

 

차이점이 보이시나요?

답은 products/execel의 위치가 products/{product} 보다 위에 있다는 점입니다.

 

만약 아래 있었다면 products/excel이 아래 라우팅을 따르므로 있지도 않은 product를 찾으므로 404가 발생한 것입니다.

Route::get('products/{product}',[ProductController::class, 'show'])->name("products.show");

 

반응형