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");
반응형