Псевдоним Apache для 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.

Любые идеи о том, как я могу заставить это работать?

20

Решение

В сообщении говорится, что вы не добавили опцию Indexes

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

Ваш псевдоним, вероятно, должен быть

Alias /z /data/user/service/public

или же

Alias /z/ /data/user/service/public/
14

Другие решения

Индекс каталога, запрещенный директивой 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>
1

Не проверено, но добавляется 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>
1
По вопросам рекламы [email protected]