2015-04-27 12 views
19

Sto cercando di creare un alias sul mio server che dirige tutto il traffico che entra in example.com/z/ in una directory diversa rispetto al resto della example.com, dove example.com ha un laravel 4.2 installare e example.com/z/ ha una Lumen installare che esegue un servizio.Apache alias per laravel e Lumen

Questo è il mio vhost originale:

<VirtualHost *:80> 
ServerName example.com 
DocumentRoot /data/user/public_html/public 
<Directory /data/user/public_html/public> 
    Options +FollowSymlinks 
    AllowOverride All 
</Directory> 
</VirtualHost> 

E questo è il vhost con i /z/ alias aggiunte in:

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /data/user/public_html/public 
    Alias /z/ /data/user/service/public 
    <Directory /data/user/service/public> 
    Options +FollowSymlinks 
    AllowOverride All 
    </Directory> 
    <Directory /data/user/public_html/public> 
    Options +FollowSymlinks 
    AllowOverride All 
    </Directory> 
</VirtualHost> 

Quando un navigare a exmaple.com/z/ ottengo una pagina 403 e nei registri questo errore:

Directory index forbidden by Options directive: /data/user/service/public 

E se vado a altro sotto /z/ (esempio: /z/abcd) Ottengo una pagina 404, ma sembra la pagina Laravel 404 invece della pagina Lumen 404.

Qualche idea su come posso farlo funzionare?

+1

Hai cambiato l'ordine per mettere l'alias sopra l'altro VirtualHost? Non sicuro al 100% in questo lavoro, ma qualcosa che vorrei provare. –

+0

Ho controllato.Non funziona in questo modo :( –

risposta

14

Il messaggio sta dicendo non hai aggiunto l'opzione Indexes

<Directory /data/user/service/public> 
    Options +FollowSymlinks +Indexes 
    AllowOverride All 
</Directory> 

tuo alias probabilmente dovranno essere

Alias /z /data/user/service/public 

o

Alias /z/ /data/user/service/public/ 
+0

Quando aggiungo questo ottengo l'elenco delle directory (nel mio caso index.php e test.php) .Cerca di navigare in uno di questi file risulta in una pagina 404. – Samsquanch

+0

E ciò che mostra nel tuo log apache? –

+0

'script '/data/user/service/publicindex.php' non trovato o non in grado di stat, referer: http: // example.com/z /' – Samsquanch

1

Directory index forbidden by Options directive: /data/user/service/public

Apache ha non trovato fi le specificato da DirectoryIndex - predefinito su index.phpindex.html e non può mostrare indexes seguire la configurazione Sei sicuro che uno di questi file sia presente in /data/user/service/public?

Essere sicuri di questo e di aggiungere e .htaccess in tu sei directory pubblica

Options +FollowSymLinks 
RewriteEngine On 

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

da http://lumen.laravel.com/docs/installation#pretty-urls

o aggiungere un blocco directory a livello padre (se c'è qualche collegamento Simb)

<Directory /data/user> 
     Options -Indexes FollowSymLinks 
     AllowOverride all 
     Order Allow,Deny 
     Allow from all 
    </Directory> 
1

Non testato, ma l'aggiunta di Require all granted dovrebbe rimuovere alcune delle restrizioni di condivisione.

L'altra cosa da considerare è assicurarsi che la tua cartella sia effettivamente di proprietà del proprietario di Apache (www-data, apache, o anche il tuo nome utente o qualcos'altro a seconda dell'installazione). Se la cartella non può essere letta da Apache, provocherà un errore.

Ho anche cambiato la directory per fare riferimento all'Alias ​​anziché al percorso del file.

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /data/user/public_html/public 
    Alias /z /data/user/service/public 
    <Directory /z> 
    Options +FollowSymlinks +Indexes 
    AllowOverride All 
    Require all granted 
    </Directory> 
    <Directory /data/user/public_html/public> 
    Options +FollowSymlinks 
    AllowOverride All 
    </Directory> 
</VirtualHost>