2016-06-26 44 views
9

Ho una classica struttura di progetto Larevel 5 e devo reindirizzare tutte le richieste a public/.Come reindirizzare tutte le richieste a public/folder in laravel 5

Sono in un ambiente di hosting classico, quindi public/ è una sottocartella del mio documento root.

Immagino che possa essere fatto tramite .htaccess ma ho ancora bisogno di capire come. Chiunque può aiutare?

Grazie

+0

Ricerca di [tag: .htaccess], [tag: laravel] e pubblico: http://stackoverflow.com/search?q=%5B.htaccess%5D+%5Blaravel%5D+public –

+0

Ottieni hosting migliore. Rendere disponibili i file non pubblici è un potenziale buco di sicurezza. – ceejayoz

risposta

12

Ci sono due soluzioni:

1. Utilizzo di .htaccess con mod_rewrite

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^public 
RewriteRule ^(.*)$ public/$1 [L] 

2. È possibile aggiungere un file index.php che contiene il codice seguente e mettilo sotto la tua cartella Laravel radice (cartella public_html).

<?php 
header('Location: public/'); 
1

Questo è un estratto dal another answer che può anche aiutare.

-

  • Modificare la tua public_html/.htaccess Per reindirizzare tutte le richieste al public sottocartella.

    # public_html/.htaccess 
    
    <IfModule mod_rewrite.c> 
        <IfModule mod_negotiation.c> 
         Options -MultiViews 
        </IfModule> 
    
        RewriteEngine On 
    
        # Redirect All Requests To The Subfolder 
        RewriteRule^/public 
    
    </IfModule> 
    
  • Assicuratevi di avere il corretto public_html/public/.htaccess (GitHub).

    # public_html/public/.htaccess 
    
    <IfModule mod_rewrite.c> 
        <IfModule mod_negotiation.c> 
         Options -MultiViews 
        </IfModule> 
    
        RewriteEngine On 
    
        # Redirect Trailing Slashes If Not A Folder... 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteRule ^(.*)/$ /$1 [L,R=301] 
    
        # Handle Front Controller... 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteRule^index.php [L] 
    
        # Handle Authorization Header 
        RewriteCond %{HTTP:Authorization} 
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    </IfModule> 
    
0

Lo scenario ideale è avere /home/user/public come un link simbolico da /home/user/laravel/public.