2014-02-09 2 views
7

Im, используя Laravel 4.не работает без index.php

У меня есть мнение nest.blade.php и соответствующий контроллер контента NestController.php:

Контроллер:

class NestController extends BaseController { 

    public function showView() 
    { 
     return View::make('nest'); 
    } 

} 

Маршрут:

Route::get('/nest', '[email protected]'); 

Когда я иду к url ​​/ гнезду, он не работает. Когда я перехожу к url ​​/ index.php/nest, он работает.

Очевидно, я просто хочу, чтобы это было/гнездо без index.php.

Как я могу решить эту проблему?

Мой 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> 
+0

Основываясь на вашем .htaccess, кажется, вы работаете Laravel 4.1? Во всяком случае, я скопировал ваш маршрут и контроллер в свои среды (как 4.0, так и 4.1), и все работает слиянием с помощью '/ nest' url. В этом нет ничего плохого. –

+0

интересный. Может быть, это связано с моими призраками? Или я не сделал что-то во время установки, что позволяет маршрутам работать? все эти возможности обдумывают. Да, последняя версия, которую я запускаю. – RSM

+0

Да, я бы посмотрел на них, но, к сожалению, это не известно мне. Как я уже сказал, все работает отлично в моем env с вашими маршрутами.php, контроллером и даже .htaccess. Мой apache2 работает со всеми настройками по умолчанию, поэтому там ничего особенного не требуется. –

ответ

5

Довольно URL-адреса

Каркасные судов с публичной/.htaccess файл, который используется, чтобы адреса без index.php. Если вы используете Apache для обслуживания своего приложения Laravel , убедитесь, что включите модуль mod_rewrite.

Если .htaccess файл, который поставляется с Laravel не работает с установкой Apache, попробуйте это один:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

Для более соответствующей помощи, проверьте this answer.

+2

Я благодарю вас за ответ. Для кого-либо еще, не используйте приведенный выше код, ответ был в ссылке, мне пришлось переписать a2enmod – RSM

+0

@RyanMurphy, спасибо приветствую :-) –

+1

@ TheAlpha чувак, это заняло у меня около 4 часов. Это, наконец, работает! благодаря!! – Haring10

2

Я включил модуль mod_rewrite на HTTP-сервере Apache, перезапустил службу Apache и снова протестировал его, и он РАБОТАЕТ !!!

Ниже приведен код, используемый для включения режима mode_rewrite;

1) Un-Хэш эта строка в Apache/CONF/httpd.conf

LoadModule rewrite_module модули/mod_rewrite.so

2) Создать новую конфигурацию "выборки-проекта" без изменения конфигурации по умолчанию в файле httpd.conf

 
Directory "C:/Apache24/htdocs/sample-project"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
Directory> 
2

Будьте предупреждены! Если он не работает даже после включения перезаписи модуля. Вам нужно изменить строку «AllowOverride None» на «AllowOverride All» в httpd.conf.

Поскольку @A Alpha предупрежден, Laravel не нужно настраивать для этой цели.

0

При изменении строки AllowOverride None на AllowOverride All в httpd.conf убедитесь, что вы сделали это внутри <directory ...>, который содержит допустимый путь.

Пример

<Directory "/var/www/html"> #check path 
    Options Indexes FollowSymLinks 
    AllowOverride All 
</Directory> 
Смежные вопросы