Думаю, сейчас я ненавижу Apache, но займемся вопросом. Это может быть ошибка конфигурации с моей стороны или просто моя неспособность увидеть, что находится прямо передо мной, но я пытаюсь настроить поддомен в Apache, и, несмотря ни на что, он всегда перенаправляет поддомен в Интернет корень основного домена. Моя конфигурация опубликована ниже (и да, информация о доменном имени была специально изменена):
<VirtualHost *>
DocumentRoot /var/www/root/
ServerName example.com
<Directory /var/www/root/>
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<Directory /usr/share/squirrelmail>
Options Indexes FollowSymLinks
<IfModule mod_php5.c>
php_flag register_globals off
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
# access to configtest is limited by default to prevent information leak
<Files configtest.php>
order deny,allow
deny from all
allow from 127.0.0.1
</Files>
</Directory>
# users will prefer a simple URL like http://webmail.example.com
<VirtualHost *>
DocumentRoot /usr/share/squirrelmail/
ServerName squirrelmail.example.com
</VirtualHost>
Вам необходимо включить виртуальные хосты на основе имен с помощью NameVirtualHost *
. Кроме того, я не знаю, имеет ли это значение, но почему корень документа squirrelmail определен вне контейнера VirtualHost?
Во-первых: вы должны делать отступы в конфигах, чтобы их было легче читать. Помогает также выявлять некоторые виды ошибок.
Я действительно не думаю, что это вызывает ошибку, но попробовать стоит;) документы say: DocumentRoot следует указывать без косой черты в конце.
Я не вижу ошибки в конфигурации вашего виртуального хоста, и вы говорите, что он перенаправляет на домен по умолчанию, поэтому я не думаю, что ошибка на стороне apache. Возможно, ошибка связана с указанным вами index.php - вы установили какой-то хост по умолчанию или что-то в конфигурации squirrelmail, чтобы он перенаправлял? Попробуйте заменить index.php каким-нибудь файлом, который просто что-то печатает, и проверьте, работает ли он.