Хорошо, я запускаю apache 2 с парой виртуальных хостов, и 2 из них работают в одном домене. Теперь моя проблема в том, что один из них должен работать в субдомене (dev.domain.com), а другой - во всем остальном, но я не могу заставить его работать.
У меня есть 2 файла в доступных для сайтов (dev.domain.com и domain.com), и оба включены с символическими ссылками на сайтах.
Это то, что у меня внутри файлов
dev.domain.com
<VirtualHost *:80>
ServerName dev.domain.com
ServerAlias development.domain.com
DocumentRoot /home/myusername/public_www/dev.domain.com
<Directory /home/myusername/public_www/dev.domain.com/>
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/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
domain.com
<VirtualHost *:80>
ServerName domain.com
ServerAlias *.domain.com *.domain.info
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
</IfModule>
DocumentRoot /home/myusername/public_www/domain.com
<Directory /home/myusername/public_www/domain.com/>
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/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Так кто-нибудь знает, что не так с моей конфигурацией? Я был бы очень признателен за помощь, я пытался с этим вечно безуспешно.
Примечание. Мой реальный домен начинается с hu, поэтому я подумал, что dev.h .... будет загружен до файла h .....
ServerAlias *.domain.com *.domain.info
означает, что определение будет использоваться для всех хостов в domain.com, перекрывая ваше определение dev.domain.com.
Вам действительно нужен подстановочный знак? Обратите внимание: если вы также не используете подстановочные знаки в записях DNS, в этом нет смысла, и вам следует просто создать псевдонимы для фактически существующих записей DNS.
Если вам действительно нужно использовать подстановочный знак, вам нужно удалить dev.domain.com
vhost, и вместо этого используйте правила перезаписи в vhost domain.com для сопоставления http://dev.domain.com
например http://www.domain.com/dev