Апач для Laravel и Lumen
Я пытаюсь сделать псевдоним на своем сервере, который направляет весь трафик, который входит в example.com/z/
, в другой каталог, чем остальные example.com
, где example.com
имеет установку Laravel 4.2 и example.com/z/
установка Lumen, которая запускает службу.
Это мой оригинальный vhost:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /data/user/public_html/public
<Directory /data/user/public_html/public>
Options +FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
И это vhost с псевдонимом /z/
, добавленным в:
<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>
При переходе на exmaple.com/z/
я получаю страницу 403 и в журналах эту ошибку:
Directory index forbidden by Options directive: /data/user/service/public
И если я перейду к чему-нибудь еще под /z/
(пример: /z/abcd
), я получаю страницу 404, но она похожа на страницу Laravel 404 вместо страницы Lumen 404.
Любые идеи о том, как я могу заставить это работать?
Ответы
Ответ 1
В сообщении говорится, что вы не добавили опцию Indexes
<Directory /data/user/service/public>
Options +FollowSymlinks +Indexes
AllowOverride All
</Directory>
Возможно, ваш псевдоним будет
Alias /z /data/user/service/public
или
Alias /z/ /data/user/service/public/
Ответ 2
Индекс каталога, запрещенный директивой Options:/data/user/service/public
Apache не нашел файл, указанный DirectoryIndex
- по умолчанию index.php
index.html
и не может показать indexes
, следуя настройке
Вы уверены, что есть один из этих файлов в /data/user/service/public
?
Убедитесь в этом и добавьте и .htaccess
в общий каталог
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
из http://lumen.laravel.com/docs/installation#pretty-urls
или добавить блок каталога на родительский уровень (если есть некоторая символьная ссылка)
<Directory /data/user>
Options -Indexes FollowSymLinks
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
Ответ 3
Неподтвержденный, но добавление Require all granted
должно удалить некоторые ограничения доступа.
Еще одна вещь, которую следует учитывать, - обеспечить, чтобы ваша папка фактически принадлежала владельцу Apache (www-data, apache или даже ваше имя пользователя или что-то еще в зависимости от вашей установки). Если папка не может быть прочитана Apache, она вызовет ошибку.
Я также переключил каталог, чтобы ссылаться на псевдоним, а не на путь к файлу.
<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>