2015-04-27 11 views
19

Ich versuche, einen Aliasnamen auf meinem Server zu machen, die den gesamten Datenverkehr, der von example.com als der Rest kommt in example.com/z/ in ein anderes Verzeichnis verweist, in dem example.com ein Laravel hat 4.2 installieren und example.com/z/ hat ein Lumen installieren, die einen Dienst ausführt.Apache alias für Laravel und Lumen

Dies ist meine ursprüngliche vHost:

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

Und das ist die vhost mit dem /z/ Alias ​​hinzugefügt:

<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> 

Wenn ein navigate zu exmaple.com/z/ ich eine 403-Seite erhalten und in den Protokollen Dieser Fehler:

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

Und wenn ich zu etwas anderem unter 01 gehe(Beispiel: /z/abcd) Ich bekomme eine 404 Seite, aber es sieht aus wie die Laravel 404 Seite statt der Lumen 404 Seite.

Irgendwelche Ideen, wie ich das zum Laufen bringen kann?

+1

Haben Sie die Reihenfolge geändert, um den Alias ​​über den anderen VirtualHost zu setzen? Nicht 100% sicher in dieser Arbeit, aber etwas, was ich versuchen würde. –

+0

Ich überprüfte.Funktioniert nicht so :( –

Antwort

14

Die Meldung sagt Ihnen, die Option

Alias /z /data/user/service/public 

oder

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

Wenn ich das hinzufüge, bekomme ich die Verzeichnisliste (in meinem Fall index.php und test.php). Der Versuch, zu einer dieser Dateien zu navigieren, ergibt eine 404 Seite. – Samsquanch

+0

Und was zeigt sich in Ihrem apache log? –

+0

'script '/data/user/service/publicindex.php' nicht gefunden oder nicht in der Lage, referer: http: // example.com/z /' – Samsquanch

1

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

Apache muss sein Indexes

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

Ihr Alias ​​wird wahrscheinlich nicht hinzugefügt haben nicht gefunden fi le angegeben von DirectoryIndex - Standard index.htmlindex.html und kann nicht angezeigt indexes folgen Sie die Konfiguration Sind Sie sicher, dass eine dieser Dateien in /data/user/service/public vorhanden ist?

Seien Sie sicher, dies und fügt und .htaccess in Sie sind öffentliches Verzeichnis

Options +FollowSymLinks 
RewriteEngine On 

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

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

oder einen Verzeichnisblock zu übergeordneter Ebene aus (wenn es einig symb Link)

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

Nicht getestet, aber das Hinzufügen von Require all granted sollte einige der Freigabeeinschränkungen entfernen.

Die andere Sache, die Sie beachten sollten, ist sicherzustellen, dass Ihr Ordner tatsächlich Eigentum des Eigentümers von Apache ist (www-data, apache oder sogar Ihr Benutzername oder etwas anderes, abhängig von Ihrer Installation). Wenn der Ordner von Apache nicht gelesen werden kann, wird ein Fehler ausgelöst.

Ich wechselte auch das Verzeichnis, um auf den Alias ​​und nicht auf den Dateipfad zu verweisen.

<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>