2014-11-13 5 views
1

Я только что начал создавать приложение Laravel и столкнулся с проблемой маршрутизации.Laravel 4.2 - NotFoundHttpException

  1. Laravel версия - 4,2
  2. PHP версия - 5,5
  3. Я использую XAMPP
  4. У меня есть модуль перезаписи активный на Apache

Вот мой Routes файл:

<?php 

Route::get('/', array(
    'as' => 'index', 
    'uses' => '[email protected]' 
)); 

Route::get('/account', array(
    'as' => 'account', 
    'uses' => '[email protected]_create' 
)); 

Мои контроллеры выглядят следующим образом:

<?php 

class IndexController extends BaseController 
{ 
    public function index() 
    { 
     return View::make('index'); 
    } 
} 

<?php 

class AccountController extends BaseController 
{ 
    public function get_create() 
    { 
     return 'asd'; 
    } 

    public function post_create() 
    { 

    } 
} 

Вот моя ошибка:

Symfony\Component\HttpKernel\Exception\NotFoundHttpException thrown with message "" 

Stacktrace: 
#11 Symfony\Component\HttpKernel\Exception\NotFoundHttpException in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:5680 
#10 Illuminate\Routing\RouteCollection:match in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:5004 
#9 Illuminate\Routing\Router:findRoute in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:4992 
#8 Illuminate\Routing\Router:dispatchToRoute in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:4984 
#7 Illuminate\Routing\Router:dispatch in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:715 
#6 Illuminate\Foundation\Application:dispatch in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:696 
#5 Illuminate\Foundation\Application:handle in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:7744 
#4 Illuminate\Session\Middleware:handle in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:8351 
#3 Illuminate\Cookie\Queue:handle in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:8298 
#2 Illuminate\Cookie\Guard:handle in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:10961 
#1 Stack\StackedHttpKernel:handle in C:\xampp\htdocs\Protosite\bootstrap\compiled.php:657 
#0 Illuminate\Foundation\Application:run in C:\xampp\htdocs\Protosite\public\index.php:49 

EDIT: Одна вещь, которую я забыл упомянуть, индекс работает отлично, это страница учетная запись с ошибкой.

Я рассматривал подобные проблемы, но по какой-то причине они этого не решили.

Cheers!

+0

Вы должны удалить косую черту перед '/ account', чего не ожидается в Laravel. – Joost

ответ

0

Похоже, что ваш переписывание не работает. Если вы добавите index.php к URL прямо перед /account, это сработает?

Например, yourdomain.com/account станет yourdomain.com/index.php/account

Если перезапись не работает, но у вас есть файл .htaccess в вашем public каталоге, то вам, вероятно, нужно разрешить переопределение в конфигурации Apache. Ниже приведен пример конфигурации виртуального хоста для XAMPP и Laravel.

Я отметил линии, которые вам нужно изменить. Измените первый и третий, чтобы указать каталог public в каталоге вашего веб-сайта. Затем измените вторую строку на имя домена, которое вы используете на своем веб-сайте.

<VirtualHost *:80> 
    DocumentRoot "C:/xampp/htdocs/yourdomain/public"  # Change this line 
    ServerName yourdomain.com        # Change this line 
    <Directory "C:/xampp/htdocs/yourdomain/public">  # Change this line 
     Options Indexes FollowSymLinks ExecCGI Includes 
     AllowOverride All # This line enables .htaccess files 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

Необходимо будет перезапустить Apache, чтобы эти настройки вступили в силу.

+0

Спасибо за ответ. Я пробовал это, и он работает так, спасибо. Если бы вы могли дать мне указания относительно того, как работать с нормальными URL-адресами, это было бы здорово. Еще раз спасибо. – hadlow

+0

У вас есть файл в вашем каталоге 'public /' с именем '.htaccess'? Если у вас нет файла .htaccess, вы можете использовать версию из [Laravel Docs] (http://laravel.com/docs/4.2/installation#pretty-urls). Это файл, который удаляет 'index.php' из URL-адреса. Для его работы вам нужно установить «AllowOverride All» в настройке Apache для каталога вашего веб-сайта. – BrokenBinary

+0

Я использовал htaccess, который был установлен с Laravel, и я также пробовал другую версию на документах Laravels и все еще не работал. Однако мне удалось использовать команду 'php artisan serve', которая, похоже, работает нормально. – hadlow