2011-12-15 2 views
3

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

В чем проблема?

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

<VirtualHost *:80> 
ServerName web2.com 
ServerAdmin [email protected] 
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 [email protected] 
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> 
+0

У меня было то же самое и в моем случае часть с «NameVirtualHost *: 80» была i файлом, который не был включен в основной httpd.conf, поэтому vhosts не были включены вообще, и поэтому все указали на vhost по умолчанию. – jkulak

ответ

5

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

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

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

Update

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

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

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

+0

Есть меньше шансов на ошибку, у меня есть как сколько меньше кода для нового ВХ, Ниже приведен код NameVirtualHost *: 2107 ServerName tab.com ServerAlias ​​http://tab.com DocumentRoot/вар/WWW/tab3 Options Indexes FollowSymlinks MultiViews AllowOverride Все

+0

AllowOverrid Все означает, что вы можете иметь файлы .htaccess добавляя вещи в ваш конфиг. Вместо этого выложите None и удалите Multiviews – regilero

+0

Я внес изменения, но все равно получаю ту же самую проблему ... когда я открываю субдомены, он указывает на неправильную директорию :(есть ли что-нибудь, что я не вижу? –

0

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

+0

Yeh, я забыл упомянуть об этом, но я перезапустил сервис 2-3 раза –

+0

О, я вижу, извините, я не мог помочь, тогда, рад, что вы его работаете: P – SuperTron

0

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

0

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

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

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

Смежные вопросы