Допустим, у меня есть domain.com и sub.domain.com.
Domain.comкорень должен быть / var / www / domain_com / и sub.domain.comкорень должен быть / var / www / domain_com / sub /.
/ etc / apache2 / sites-enabled / domain_com:
<VirtualHost sub.domain.com>
ServerName sub.domain.com
DocumentRoot "/var/www/domain_com/sub/"
ErrorLog "/var/log/subdomain-error.log"
CustomLog "/var/log/subdomain-access.log" combined
<Directory "/var/www/domain_net/sub/">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost domain.com>
ServerName domain.com
DocumentRoot "/var/www/domain_com/"
ErrorLog "/var/log/apache2/domain-error.log"
CustomLog "/var/log/apache2/domain-access.log" combined
<Directory "/var/www/domain_net/">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>
/ и т.д. / apache2 / сайты-включен / 000-по умолчанию
<VirtualHost _default_:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
В настоящее время я получаю это, когда делаю с sub.domain.com/img.png:
[Sat Apr 09 01:14:41 2011] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/domain_com/img.png, referer: http://sub.domain.com/img10.png
Что я делаю не так? Почему sub.domain.com/img.png не обслуживается из / var / www / domain_com / sub /?
Чтобы виртуальный хостинг на основе имени работал правильно, вам необходимо сопоставить свой адрес привязки для <VirtualHost>
блокирует то, что настроено в NameVirtualHost
директива. Хостинга на основе имен не происходит, поэтому первый блок, который принимает адрес, - это получение всех запросов.
Обычно такая директива присутствует где-то в ваших файлах конфигурации Apache (при разделении конфигурации часто используется ports.conf):
NameVirtualHost *:80
Это означает, что вы хотите, чтобы vhosts, которые будут распределять запросы по имени, должны соответствовать тому, что там установлено:
<VirtualHost *:80>
ServerName sub.domain.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName domain.com
# (you might want this too):
ServerAlias www.domain.com
...
</VirtualHost>
Кстати, а почему ваши <Directory>
директивы, управляющие только domain_net
и нет domain_com
?
into /etc/apache2/sites-enabled/000-default add the line bellow
NameVirtualHost *
# execute the command
httpd -S
# look at how many virtual hosts do you have enabled do ur request
# and check the logs