![Apache httpd: псевдоним наследуется виртуальным хостом?](https://rvso.com/image/769272/Apache%20httpd%3A%20%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D0%B5%D1%82%D1%81%D1%8F%20%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%20%D1%85%D0%BE%D1%81%D1%82%D0%BE%D0%BC%3F.png)
Когда сервер по умолчанию содержит
Alias /bla /srv/www/blub
тогда все VirtualHosts также смогут получить доступ /bla
.
Должен сказать, я этого не ожидал. По моему скромному мнению, виртуальный сервер должен иметь свою собственную отдельную конфигурацию.
Это баг или фича? Можно ли отключить это поведение?
решение1
Настройки не ограничиваются конкретным VirtualHost, а размещаются в основных файлах конфигурации сервера (т.е.httpd.conf
или в загруженных фрагментах конфигурацииInclude
и/илиIncludeOptional
директивы) действительны для всего сервера, включая все VirtualHosts.
Объем:Директивы, размещенные в основных файлах конфигурации, применяются ко всему серверу. Если вы хотите изменить конфигурацию только для части сервера, вы можете ограничить область действия директив, поместив их в разделы
<Directory>
,<DirectoryMatch>, <Files>, <FilesMatch>, <Location>
и<LocationMatch>
. Эти разделы ограничивают применение директив, которые они заключают, определенными расположениями файловой системы или URL-адресами. Они также могут быть вложенными, что позволяет выполнять очень тонкую настройку.
httpd имеет возможность обслуживать много разных веб-сайтов одновременно. Это называется виртуальным хостингом. Директивы также можно ограничить, поместив их в
<VirtualHost>
разделы, так что они будут применяться только к запросам для определенного веб-сайта.
Не помещайте в основной файл httpd.conf директивы, которые вы не хотите применять ко всем VirtualHosts.