LinuxForum.Fans
Тема

[решено частично] Apache2 - virtual host

Автор: hid4msc 4 сообщений 5129 просмотров
#28646

Столкнулся с небольшой проблемой, но не понятной мне...
Стоит Debian свежий, последний.
Поставил Apache2.
По дефолту имеются две папки sites-available и sites-enable с файлом default, заделал его под себя, это идет как основной сайт.

<VirtualHost *:80>
ServerAdmin hid4msc@gmail.com
ServerName site.ru

DocumentRoot /var/www/main/

<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory /var/www/main>
Options None
AllowOverride None
Order allow,deny
allow from all
</Directory>

LogLevel warn
ErrorLog /var/log/apache2/error_main.log
CustomLog /var/log/apache2/access_main.log combined
</VirtualHost>

через некоторое время понадобилось добавить еще один виртуал хост
создаю файл /etc/apache2/sites-available/files

<VirtualHost *:80>
ServerAdmin hid4msc@gmail.com
ServerName files.site.ru

DocumentRoot /var/www/files/

<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory /var/www/files>
Options None
AllowOverride None
Order allow,deny
allow from all
</Directory>

LogLevel warn
ErrorLog /var/log/apache2/error_files.log
CustomLog /var/log/apache2/access_files.log combined

</VirtualHost>

и делаю симлинк соответственно в /etc/apache2/sites-enable/files
далее sudo /etc/init.d/apache2 reload

пробую зайти site.ru - всё окей
пробую зайти files.site.ru - всё окей
пробую зайти test.site.ru - и тут как бы нету такого сайта, я хотел бы чтобы по дефолту открывался site.ru в таком случае, а он открывает index.php из второго виртуал хоста...
если добавить третий виртуал хост, то при заходе на несуществующий опять же отдает index.php от второго...

далее вообще смех, удаляю симлинк /etc/apache2/sites-enable/files
создаю еще один виртуал хост /etc/apache2/sites-available/menu практически ТОЧНО ТАКОГО ЖЕ содержания:

<VirtualHost *:80>
ServerAdmin hid4msc@gmail.com
ServerName menu.site.ru
DocumentRoot /var/www/menu/
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory /var/www/menu>
Options None
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error_menu.log
LogLevel warn
CustomLog /var/log/apache2/access_menu.log combined
</VirtualHost>

делаю симлинк /etc/apache2/sites-enable/menu
и соответственно перузагружаю apache2.conf
/etc/init.d/apache2 reload

пробую зайти test.site.ru в надежде что перекинет на файл index.php из menu.site.ru но этого не происходит(!!), открывет из основного вирутал хоста как мне и нужно, я вообще в замешательстве... подключаю снова sudo ln -s /etc/apache2/sites-available/files /etc/apache2/sites-enable/files и делаю /etc/init.d/apache2 reload
иду снова test.site.ru и что я вижу, а вижу я index.php из files.site.ru !!!!!

короче полный бред и я не понимаю... :(

как правильно настроить чтобы при заходе на не существующий поддомен открывался оcновной виртуал хост ?

что и где не так ???

#28652

.htaccess
+
RewriteCond
+
RewriteRule

#28665

hid4msc,
1. для активирование виртуального хоста можно использовать команду a2ensite
[console]
a2ensite имя_виртулаьного_хоста
[/console]
2. создайте виртуальный хост и не указывайте там параметра ServerName ну и собственно для этого виртуального хоста прикрутить rewrite и редиректать на site.ru smile

#29580

да не ребят, там можно как то попроще... без всего этого набора .htacces + RewriteCond + RewriteRule
я вот нашел статейку -> http://easylinux.ru/node/291
там говорится как делать "зуглушку", но у меня почему то не заработало =/
может есть еще какие то предложения...

в общем я тут подумал, и надумало вот что... apache не понимает какой у него первый, какой второй и т.д виртуальные хосты, поэтому так вот всё некорректно... я решил все виртуал хосты запхать в один файл и скормить Апачу, по мануалу Апача как раз таки все в одном файле и должно оформляться... ну и что вы думаете, заработа корректно всё !!
всем кто поучаствовал - спасибо...

Войдите или зарегистрируйтесь, чтобы ответить.