2015-04-27 16 views
19

Próbuję zrobić alias na moim serwerze, który kieruje cały ruch, który wchodzi w example.com/z/ do innego katalogu niż reszta example.com, gdzie example.com ma laravel 4,2 zainstalować i example.com/z/ ma Lumen instalacja, która uruchamia usługę.Apache alias laravel i Lumen

To jest mój oryginalny vhost:

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

I to jest vhost z /z/ alias dodanych w:

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

Kiedy nawigacja do exmaple.com/z/ dostaję 403 strony i w dziennikach ten błąd:

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

I jeśli przejdę do czegokolwiek innego w ramach /z/ (przykład: /z/abcd) Otrzymuję stronę 404, ale wygląda ona jak strona Laravel 404 zamiast ze strony Lumen 404.

Jakieś pomysły na to, jak mogę to osiągnąć?

+1

Czy zmieniłeś kolejność umieszczania pseudonimu nad innym programem VirtualHost? Nie jestem w 100% pewny, że to działa, ale coś, czego bym spróbował. –

+0

Sprawdziłem.Nie działa w ten sposób :( –

Odpowiedz

14

Komunikat mówi, że nie dodaje opcję Indexes

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

alias prawdopodobnie będzie musiał być

Alias /z /data/user/service/public 

lub

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

Po dodaniu tego uzyskuję listing katalogu (w moim przypadku index.php i test.php). Próba przejścia do jednego z tych plików powoduje wyświetlenie strony 404. – Samsquanch

+0

apache log? –

+0

'script '/data/user/service/publicindex.php' nie znaleziono lub nie może stat, referer: http: // example.com/z /' – Samsquanch

1

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

Apache nie znaleziono fi Określona przez DirectoryIndex - domyślnie index.php i nie może pokazać indexes po konfiguracji Czy na pewno jest jeden z tych plików w /data/user/service/public?

Pamiętaj o tym i dodać i .htaccess do jesteś katalog publiczny

Options +FollowSymLinks 
RewriteEngine On 

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

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

lub dodać blok do poziomu katalogu nadrzędnego (jeśli istnieje jakiś związek symb)

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

Nie przetestowane, ale dodanie Require all granted powinno usunąć niektóre z ograniczeń udostępniania.

Inną kwestią, którą należy wziąć pod uwagę, jest upewnienie się, że folder jest rzeczywiście własnością właściciela Apache (dane www, apache, a nawet nazwa użytkownika lub coś innego w zależności od instalacji). Jeśli folder nie może być odczytany przez Apache, spowoduje to błąd.

Zmieniłem także katalog, aby odwoływał się do Aliasu, a nie do ścieżki pliku.

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