Из документации у меня есть это:
AliasMatch "^/projects/(.+)" "/var/www/domain.name/$1/public"
Он должен соответствовать только таким URL, как ../projects/project1
, а не ../projects/
сам по себе.
Когда я говорю http://example.org/projects/project1/
, он возвращает 403 Forbidden
. В журналах говорится, что из-за:
No matching DirectoryIndex found, and server-generated directory index forbidden by Options directive
.
Я пытался добавить DirectoryIndex
явно в vhosts, но безрезультатно. Я открыл каталог (/var/www/domain.name/project1/public
), чтобы его мог прочитать каждый, и теперь он просто показывает список каталогов нужной мне папки. Я вижу, что он идет в нужную папку и вижу файл index.html, но он просто не получает его автоматически, как должен.
Обобщенная версия моего файла VirtualHost:
<VirtualHost *:443>
DocumentRoot /var/www/domain.name/www/public
ServerName www.domain.name
AliasMatch "^/projects/(.+)" "/var/www/domain.name/$1/public"
ErrorDocument 401 err.php
ErrorDocument 404 err.php
ErrorDocument 500 err.php
<Directory /var/www/domain.name>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
Если я затем установлю разрешения для конкретной папки проекта на 755, я просто получу список каталогов. Я поменял обратно на 711.
Все папки в /var/www/ принадлежат пользователю username:www-data и имеют права 711.
Если я делаю прямой псевдоним для папки, т.е. Alias /projects/<actual-project-name> /var/www/domain.name/<project-name>/public
, он работает.
index.html
(или любого другого указанного файла индекса каталога) в этом каталоге. - person MrWhite   schedule 15.08.2015"...now it just shows a directory listing of the folder I want. I can see that its going to the right folder and can see the index.html file..."
. Все в порядке, за исключением того, что он не извлекает файл индекса, который там есть, вместо этого он просто отображает список каталогов (в котором я вижу файл индекса). - person James   schedule 15.08.2015Indexes
? Ваша директиваAliasMatch
сопоставляет все URL-адреса, начинающиеся с/projects/<project>
, с одним пунктом назначения. Это сделано намеренно? Находится ли/var/www/domain.name/<project>/public
в том же корневом каталоге документа? Добавьте<VirtualHost>
к своему вопросу, чтобы мы могли лучше рассмотреть. - person MrWhite   schedule 15.08.2015$1
.domain.name/projects/<project> => /var/www/domain.name/<project>/public
, тогда какdomain.name/projects/ => /var/www/domain.name/www/public
(по сути, просто доступ к файлу php в корне документа основного сайта - я удалил расширения .php для файлов в корне документа основного сайта). Я добавил свой VHost к вопросу. - person James   schedule 15.08.2015