В основном apache может работать как сервер с одним доменом или как сервер с несколькими хостами (virtualhost).
Говоря о apache 2, виртуальные хосты сервера настроены в
path_to_apache_config/sites-available/domain_config
path_to_apache_config/sites-enabled/link_to_domain_config
В каждом определении виртуального хоста, который может быть просто вашим собственным локальным хостом, есть множество настроек, которые можно применять и изменять поведение для каждого сайта, который вы размещаете.
Когда клиент подключается к серверу, apache проверяет, есть ли определение, соответствующее домену, в запросе пользователя. Если это положительно, он читает конфигурацию, которая указывает на папку файлов сайта с директивой
DocumentRoot /var/www/your_site_folder
С этой части вы можете свободно использовать любую структуру папок, какую пожелаете. Если вы используете mod_userdir, который позволяет размещать веб-страницы для пользователей, которые известны системе, он укажет на них
/home/john/public_html
И с того момента, это то же самое, что упомянуто выше.
Какие страницы может обслуживать сервер - это вопрос установленных библиотек. Настройки по умолчанию, что серверы Apache HTML-страниц. Если вы устанавливаете поддержку php, cgi (исполняемые файлы), вы можете отправлять на сервер другие соответствующие страницы.
Первое, что ищет сервер, - это индекс (html | php | ...). Если он не существует, он пытается отобразить содержимое этого каталога (зависит только от конфигурации, если это разрешено), в противном случае он возвращает статус «Запрещено ...».