Как правильно создавать виртуальные каталоги в 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]