Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException Laravel

Я пытаюсь использовать контроллер RESTful. Вот мой Route.php :

 Route::resource('test', 'TestController'); Route::get('/', function() { return View::make('hello'); }); 

Вот мой TestController.php

 <?php class TestController extends \BaseController { /** * Display a listing of the resource. * * @return Response */ public function index() { return View::make('test.home'); } /** * Show the form for creating a new resource. * * @return Response */ public function create() { // } /** * Store a newly created resource in storage. * * @return Response */ public function store() { // } /** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { // } } 

Мой маршрут приложения – localhost/Test/public/ и он показывает сообщение «Вы пришли». Но когда я попробовал localhost/Test/public/test он дал мне «Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException»

Вот мой журнал:

 [2014-05-11 14:29:59] production.ERROR: NotFoundHttpException Route: `http://localhost/Test/public/test` [] [] [2014-05-11 14:29:59] production.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in C:\wamp\www\test\bootstrap\compiled.php:5289 Stack trace: #0 C:\wamp\www\test\bootstrap\compiled.php(4663): Illuminate\Routing\RouteCollection->match(Object(Illuminate\Http\Request)) #1 C:\wamp\www\test\bootstrap\compiled.php(4651): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request)) #2 C:\wamp\www\test\bootstrap\compiled.php(4643): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #3 C:\wamp\www\test\bootstrap\compiled.php(698): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #4 C:\wamp\www\test\bootstrap\compiled.php(679): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request)) #5 C:\wamp\www\test\bootstrap\compiled.php(1136): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true) #6 C:\wamp\www\test\bootstrap\compiled.php(7218): Illuminate\Http\FrameGuard->handle(Object(Illuminate\Http\Request), 1, true) #7 C:\wamp\www\test\bootstrap\compiled.php(7815): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true) #8 C:\wamp\www\test\bootstrap\compiled.php(7762): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true) #9 C:\wamp\www\test\bootstrap\compiled.php(10768): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true) #10 C:\wamp\www\test\bootstrap\compiled.php(640): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request)) #11 C:\wamp\www\test\public\index.php(49): Illuminate\Foundation\Application->run() #12 {main} [] [] 

Я знаю, что этот вопрос задавали много раз. Я прошел через многие соответствующие темы, но просто не могу понять решение.

Исключение NotFoundHttpException в Laravel всегда означает, что он не смог найти маршрутизатор для определенного URL-адреса . И в вашем случае это, вероятно, проблема в конфигурации вашего веб-сервера, конфигурации виртуального хоста (сайта) или конфигурации .htaccess.

Ваш public / .htaccess должен выглядеть так:

 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> 

Как вы видите, есть условие в первой строке IfModule mod_rewrite.c , поэтому, если у вас нет установленного или включенного режима mode_rewrite, все правила перезаписи не будут выполнены, и это

 localhost/Test/public/ 

Будет работать нормально, но не это:

 localhost/Test/public/test 

В другой руке это тоже должно работать, потому что это его необработанная форма:

 localhost/Test/public/index.php/test 

Потому что Laravel нуждается в переписывании для работы.

Обратите внимание, что вы не должны использовать / public, ваши URL-адреса должны выглядеть так:

 localhost/Test/ 

Это еще один ключ к тому, что корневой каталог вашего виртуального хоста настроен неправильно или не указывает на / var / www / Test / public или на любой другой путь, в котором находится ваше приложение.

Все это предполагает, что вы используете Apache 2.

Я нашел другую ситуацию, когда эта ошибка может произойти, и что на один раз нечего делать с переписаниями. Это очень неприятная опечатка 🙂

Я имел:

Route::get('replicas/item/{id}/{?stub}', ['uses' => 'ProductReplicasController@productview', 'as' => 'database.replicas.productview']);

см. {? stub}, который вызвал эту ошибку со мной, она должна быть {stub?} с курса. Но если вы новичок в Laravel (как и я), это очень легко пропустить и может занять некоторое время, чтобы понять. 🙂

еще одна вещь для проверки – это ваш корневой каталог,

мой был:

WWW / вар

и должно быть:

WWW / вар / MySite / общественная

Еще одна причина, по которой я ненавижу веб-разработку

Я получал ту же ошибку исключения, когда один проект работал, но другой проект с тем же файлом .htaccess на том же локальном хосте не работал. Оказывается, поскольку в моем каталоге проектов есть заглавная буква, URL-адрес также должен быть капиталом для маршрутизации на работу. localhost / minorweb / public / account не работал, но работает localhost / minorWeb / public / account с W capital. поэтому, если ничто, кажется, не решает проблему, проверьте, что ваш URL-адрес сопоставлен с каталогом проекта с футляром.