Подтвердить что ты не робот

Апач для 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.

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

4b9b3361

Ответ 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>