2013-08-05 3 views
2

Я работаю в мой первый проект с Laravel перезапись, это простой сайт с админ-панели:Фактический каталог Laravel маршрут

В моей «общественной папке» Я каталог под названием «админ», где я поставил все стили и скрипты, соответствующие панели администратора. Я также определил маршрут в моем приложении, чтобы справиться с «админами» GET:

Route::get('/admin', 'Admin\[email protected]'); 

Проблема заключается в том, что, поскольку у меня есть, что «админы» папка в моей общественной директории Laravel игнорирует «администратор» маршрут I поэтому я не могу получить доступ к правильному контроллеру. Я подозреваю, что это имеет какое-то отношение к .htaccess, но я не уверен, как его решить. Это как мой Htaccess выглядит прямо сейчас:

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 
+0

Если вы перейдете на htaccess и получите доступ к файлам администратора напрямую, это означает, что вы не будете использовать laravel для раздела admin. это ваше намерение? – Laurence

+0

Извините, я набрал по ошибке временное исправление, которое я использовал ... В основном проблема заключается в том, когда я перехожу к http: // localhost/public/admin. Я получаю каталог «admin» вместо контроллера, который я назначил по маршрутам. php – enzo

+0

Почему вы помещаете папку администратора в общий каталог? он должен быть в каталоге приложения/контроллера Laravel – Laurence

ответ

2

Вы не можете иметь открытый каталог с таким же именем, как маршрут - в противном случае, как будет Laravel знать, является ли «/ админ» для контроллера, или для стиля и т.д. .

Вы должны хранить администратора таблицы стилей и т.д. в/активы/админ/*

-1

Для routes.php:

Route::controller('admin/dashboard', 'Admin\DashboardController'); 

Для использования активов в общедоступном контейнера у НУ может теперь использовать:

<script type="text/javascript" src="{{Request::root();}}/assets/js/jquery.js"></script> 

Где активы в /public/assets/js/jquery.js

Надеется, что это помогает.

1

Проблема заключается в следующей строке:

RewriteCond %{REQUEST_FILENAME} !-d 

В вашем примере это говорит веб-сервер не отправить/админ маршрут к Laravel, потому что это физический каталог. Если вы удалите это, тогда должен работать маршрут/admin. Это, тем не менее, предотвратит просмотр непосредственно в папку и получение списка каталогов, что не должно быть проблемой. Следующая строка в htaccess позволит вам связать файлы активов, содержащиеся в каталоге администратора, и не обрабатывать их Laravel, поэтому их не следует удалять.

новая версия Laravel также содержит:

# Redirect Trailing Slashes... 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

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

# Redirect Trailing Slashes... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

Так что если используя новейшую версию Laravel, ваш файл htaccess должен выглядеть примерно так:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule>