2016-11-23 12 views
5

Używam frameworka Laravel. Jak wiecie, jego katalogu wygląda następująco:Jak zrobić folder publiczny jako root w Laravel?

enter image description here

Aby otworzyć stronę główną mojej stronie (Route::get('/', '[email protected]');) muszę otworzyć /public folder z katalogu. Innymi słowy, aby zobaczyć pierwszą stronę mojej stronie, tutaj jest URL:

http://example.com/public 

tak, tylko moja nazwa domeny (http://example.com/) nie jest moim głównym. Jak utworzyć folder /public jako root?


Obecnie znalazłem obejście. Mogę utworzyć index.php w katalogu głównym i napisać kod przekierowania do folderu /public. Tak więc, gdy użytkownik wejdzie na http://example.com/, zostanie automatycznie przekierowany do http://example.com/public. Ale wciąż jest to brzydkie. Nie chcę, aby w adresie URL było /public. Jakieś sugestie?

+0

Możliwy duplikat [laravel 5 - Usuń publicznej z URL] (http://stackoverflow.com/questions/28364496/laravel-5-remove-public-from-url) –

+0

Jaka jest struktura katalogów na twoim FTP? Coś w rodzaju 'domains/domain.com/public_html'? –

Odpowiedz

5

Istnieje wiele sposobów na zrobienie tego.

Wystarczy wyciąć index.php i .htaccess z publicznej katalogu i wkleić go w katalogu głównym, to wszystko i zastąpić dwie linie w index.php jako

require __DIR__.'/bootstrap/autoload.php'; 
$app = require_once __DIR__.'/bootstrap/app.php'; 

Najlepszym sposobem na to jest .htaccess. Utwórz plik .htaccess w katalogu głównym w instalacji Laravel. A poniższy kod zadziała w tym przypadku.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^(.*)$ public/$1 [L] 
</IfModule> 

można przeczytać tutaj: WAY TO DO

+0

Czy powinienem zapisać te dwie linie w pliku 'index.php', który istnieje w katalogu głównym? –

+0

@MartinAJ wyciąć index.php i .htaccess z katalogu publicznego i wkleić go w katalogu głównym laravel? –

+0

ah ... jeszcze nie, lemme przetestuj go –

1

Nie mofidy żadnych plików laravel. Użyj serwera WWW (Apache lub Nginx), aby wskazać Laravel project to public directory.

dla Apache można użyć następujących dyrektyw:

DocumentRoot "/path_to_laravel_project/public" 
<Directory "/path_to_laravel_project/public"> 

Dla nginx, należy zmienić tę linię:

root /path_to_laravel_project/public; 
+0

Czy powinienem napisać te dwie pierwsze linie * (używam Apache) * w pliku '.htaccess', który istnieje w katalogu głównym? –

+0

@MartinAJ zazwyczaj umieszczasz go w głównym pliku konfiguracyjnym lub konfiguracji wirtualnego hosta. –

+0

No tak, w katalogu głównym znajduje się folder '/ config'. Więc? Czy powinienem utworzyć w nim jakiś plik? –

Powiązane problemy