Поддомены виртуальных хостов, указывающие на неправильный каталог - PullRequest
3 голосов
/ 15 декабря 2011

Я создал 2 виртуальных хоста http: // web1.com:2107, указывающих на папку «/ var / www / web1», а второй http: // web2.com:2107, указывающих на «/ var / www / web2». все субдомены в web2 работают нормально, но в случае web1.com:2107 я могу видеть только домашнюю страницу. когда я пытаюсь открыть любой поддомен из web1, например http: // games.web1.com:2107, он указывает на домашнюю страницу web2, т.е. / var / www / web2 / directory

Что-то не так в конфигурации?

ниже приведен код для хостов, которые я использую

<VirtualHost *:80>
ServerName  web2.com
ServerAdmin myeow@web2.com
ServerAlias http://www.web2.com
DocumentRoot /var/www/web2
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/web2>
    Options Indexes FollowSymLinks Multiviews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog    /var/www/web2/error80.log
CustomLog   /var/www/web2/access80.log Combined
</VirtualHost>

<VirtualHost *:2107>
ServerName  web2.com    
ServerAdmin myeow@web2.com
ServerAlias http://www.web2.com
DocumentRoot /var/www/web2
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/web2>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

    ErrorLog /var/www/web2/error.log
CustomLog   /var/www/web2/access80.log Combined
LogLevel warn

CustomLog /var/log/apache2/web2.com_access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

=============================================== ====================

NameVirtualHost *:2107
<VirtualHost *:2107>
    ServerName web1.com
    ServerAlias http://web1.com
    DocumentRoot /var/www/web1
    <Directory /var/www/web1/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
    </Directory>
    ErrorLog        /var/www/web1/error.log
    CustomLog       /var/www/web1/access.log Combined
</VirtualHost>

Ответы [ 4 ]

5 голосов
/ 16 декабря 2011

Если у вас есть несколько виртуальных хостов, один из них является виртуальным хостом по умолчанию.Это первый файл в алфавитном порядке, содержащий определение VirtualHost.

При удалении VirtualHost.Если у вас все еще есть запись в файле Hosts или в записи DNS, когда запрос выполняется на вашем сервере Apache, если он не может найти правильный VirtualHost (ServerName или ServerAlias), тогда для обработки ответа используется значение по умолчанию.

При добавлении нового VirtualHost, если вы допустили ошибку в ServerName или ServerAlias, у вас также будет VH по умолчанию.

Обновление

Теперь, когда вопрос готов, я вижу, что вы не используете ServerAlias ​​правильным образом.Все ваши субдомены должны быть перечислены в директивах ServerAlias ​​без http: // Таким образом, вы должны иметь:

ServerName web1.com
ServerAlias www.web1.com
ServerAlias games.web1.com

Вы можете попробовать * .web1.com.Иначе, когда вы используете имя, которого нет в списке, используется vhost по умолчанию (а здесь vhost web2.com определен ранее, поэтому это имя по умолчанию для этого порта)

0 голосов
/ 02 марта 2017

Для пользователей Cloudflare, у которых есть некоторые проблемы с SSL и неправильным каталогом:

Измените режим SSL в Crypto с Flexible на Full.

Это помогло мне.

0 голосов
/ 16 декабря 2011

Ну, я получил половину проблемы, в файле HOSTS осталась запись, так что страница все еще была доступна с удаленной записью имени хоста. Теперь половина проблемы все еще там. Теперь я создал еще одну запись хоста и указал на местоположение diff, но он все еще указывает на старое местоположение :(

0 голосов
/ 15 декабря 2011

После изменения Apache Conf необходимо перезапустить службу. Не уверен, что это была проблема, но это никогда не повредит;)

...