В SymfonyКомпонентHttpKernelИсключения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/
и он показывает сообщение" вы прибыли". Но когда я попытался ... --6--> это дает мне "SymfonyComponentHttpKernelExceptionNotFoundHttpException"
вот мой лог:
[2014-05-11 14:29:59] production.ERROR: NotFoundHttpException Route: `http://localhost/Test/public/test` [] []
[2014-05-11 14:29:59] production.ERROR: exception 'SymfonyComponentHttpKernelExceptionNotFoundHttpException' in C:wampwwwtestbootstrapcompiled.php:5289
Stack trace:
#0 C:wampwwwtestbootstrapcompiled.php(4663): IlluminateRoutingRouteCollection->match(Object(IlluminateHttpRequest))
#1 C:wampwwwtestbootstrapcompiled.php(4651): IlluminateRoutingRouter->findRoute(Object(IlluminateHttpRequest))
#2 C:wampwwwtestbootstrapcompiled.php(4643): IlluminateRoutingRouter->dispatchToRoute(Object(IlluminateHttpRequest))
#3 C:wampwwwtestbootstrapcompiled.php(698): IlluminateRoutingRouter->dispatch(Object(IlluminateHttpRequest))
#4 C:wampwwwtestbootstrapcompiled.php(679): IlluminateFoundationApplication->dispatch(Object(IlluminateHttpRequest))
#5 C:wampwwwtestbootstrapcompiled.php(1136): IlluminateFoundationApplication->handle(Object(IlluminateHttpRequest), 1, true)
#6 C:wampwwwtestbootstrapcompiled.php(7218): IlluminateHttpFrameGuard->handle(Object(IlluminateHttpRequest), 1, true)
#7 C:wampwwwtestbootstrapcompiled.php(7815): IlluminateSessionMiddleware->handle(Object(IlluminateHttpRequest), 1, true)
#8 C:wampwwwtestbootstrapcompiled.php(7762): IlluminateCookieQueue->handle(Object(IlluminateHttpRequest), 1, true)
#9 C:wampwwwtestbootstrapcompiled.php(10768): IlluminateCookieGuard->handle(Object(IlluminateHttpRequest), 1, true)
#10 C:wampwwwtestbootstrapcompiled.php(640): StackStackedHttpKernel->handle(Object(IlluminateHttpRequest))
#11 C:wampwwwtestpublicindex.php(49): IlluminateFoundationApplication->run()
#12 {main} [] []
Я знаю, что этот вопрос задавался много раз. Я прошел через многие соответствующие темы, но просто не могу понять решение.
5 ответов
A NotFoundHttpException
исключение в Laravel всегда означает, что он не смог найти маршрутизатор на конкретный URL. И в вашем случае это, вероятно, проблема в конфигурации вашего веб-сервера, конфигурации виртуального хоста (сайта) или .настройка htaccess.
ваш публичный/.откройте файл. htaccess должен выглядеть так:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [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']);
посмотреть {?заглушка}, что вызвало эту ошибку со мной, это должен быть {заглушка?} с курса. Но если вы новичок в Laravel (как и я), это очень легко пропустить и может занять некоторое время, чтобы понять. :)
Я получал то же исключение ошибки, когда один проект работал, но другой проект с тем же .htaccess файл на localhost не работает. Оказывается, поскольку в моем каталоге проекта есть заглавная буква, URL также должен быть капиталом для маршрутизации. localhost/minorweb/public / аккаунт не работал, но localhost/minorWeb/public / аккаунт С W capital работал. Итак, если ничто не решает проблему,проверьте соответствие URL-адреса с каталогом проекта с case.
Как говорит Арджан Коул, у меня была аналогичная ошибка
использование:
Route::get('/performance/{$submit_type}/{$send_selected}/{$date_a}/{$date_b}', 'PerformanceController@calc');
вместо
Route::get('/performance/{submit_type}/{send_selected}/{date_a}/{date_b}', 'PerformanceController@calc');
поэтому помните, когда вы используете {$stuff}
еще одна вещь, чтобы проверить ваш корень документа,
мой был:
www / var
а должно быть:
www/var/mysite / public
еще одна причина, почему я ненавижу веб-разработки