Я пытаюсь создать псевдоним на моем сервере, который направляет весь трафик, который поступает в 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.
Любые идеи о том, как я могу заставить это работать?
В сообщении говорится, что вы не добавили опцию Indexes
<Directory /data/user/service/public>
Options +FollowSymlinks +Indexes
AllowOverride All
</Directory>
Ваш псевдоним, вероятно, должен быть
Alias /z /data/user/service/public
или же
Alias /z/ /data/user/service/public/
Индекс каталога, запрещенный директивой 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>
Не проверено, но добавляется 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>