Как правильно создавать виртуальные каталоги в Apache без использования символических ссылок?

Я пришел из IIS и настраивать виртуальные каталоги там очень приятно. Вы просто щелкаете правой кнопкой мыши и добавляете "виртуальный каталог", указывающий на любой путь, который вам нравится. Этот относительный путь отражается через браузер при просмотре сайта.

Как мне сделать то же самое с Apache? Симлинки пугают меня, потому что удаление каскадов до конца. Есть ли лучший способ создания виртуальных каталогов в Apache? Я использую MAMP для Mac, который использует apache2.

3 ответа

Решение

Использовать Alias директива в файле конфигурации Apache.

Alias /virtual-dir /var/www/foo

Дополнительно, rm -r не пересекает символические ссылки и не будет каскадно проходить.

Если это Защищенный сервер, каталог "Псевдоним" также должен быть указан в конфигурации VirtualHost 443.

<VirtualHost *:443>
...
Alias /virtual-dir /var/www/foo
</VirtualHost>

Если вы указываете несколько доменов на один и тот же общедоступный каталог html, а фактическое содержимое находится за пределами общедоступного html (веб-корня), вы можете сделать это в два этапа:

1) переписать каталог на домен, например

<VirtualHost 127.0.0.1:80>
  ServerName host_one.ca
   RewriteEngine On
    RewriteRule "/?images(.*)" "/www/shared/host_one/images/$1" [NC]
</VirtualHost>
<VirtualHost 127.0.0.1:80>
  ServerName host_two.ca
   RewriteEngine On
    RewriteRule "/?images(.*)" "/www/shared/host_two/images/$1"
</VirtualHost>

2) Затем добавьте символические ссылки (альтернативно, псевдоним)

ln -s /shared/host_one/images /www/html/images/host_one
ln -s /shared/host_two/images /www/html/images/host_two

Просто будь осторожен. Доступ к изображениям host_two можно получить через host_one: domain_one.ca/images/host_two/ndomfilename}

Если вы не добавите дополнительные правила, которые НЕ удаляются в текущем каталоге хоста. Для host_one VirtualHost (я не подтвердил, работает ли это правило):

    # prevent showing content from other hosts
    RewriteRule "/?images/!(host_one/.*)" /404 [NC,L]
Другие вопросы по тегам