Strona 1 z 1

[+] Apache - wirtualne hosty (vhosts)

: 02 czerwca 2009, 01:43
autor: sigo
Mam zainstalowany serwer apache2 oraz podpiętą domenę.

Próbuję rozdzielić ruch przychodzący (www) po adresie ip oraz po domenie - w praktyce chciałbym wyświetlać inne strony po wpisaniu adresu ip i domeny.

Starałem się rozwiązać to poprzez utworzenie wirtualnych hostów:

Kod: Zaznacz cały

<VirtualHost *:80>
	DocumentRoot /var/www/default/public/
	ErrorLog /var/www/default/logs/error.log
	LogLevel warn
	CustomLog /var/www/default/logs/access.log combined
</VirtualHost>

Kod: Zaznacz cały

<VirtualHost domena.pl>
	DocumentRoot /var/www/domena.pl/public/
	ErrorLog /var/www/domena.pl/logs/error.log
	LogLevel warn
	CustomLog /var/www/domena.pl/logs/access.log combined
</VirtualHost>
niestety ten sposób nie działa.

Wyobrażałem sobie, iż ruch przychodzący na domenę będę przekierowywał do katalogu z odpowiednią stroną (drugi kod), a wszelkie inne zapytania (czyli np. wejście poprzez adres ip) wyłapywał i przekierowywał także do odpowiedniego katalogu (pierwszy kod).

Czy ktoś jest w stanie podsunąć mi jakąś podpowiedź, dzięki której mógłbym rozwiązać powyższy problem (o ile jest to oczywiście wykonalne)?

: 02 czerwca 2009, 08:37
autor: Yampress

: 02 czerwca 2009, 08:42
autor: lessmian2
Zmień lepiej drugi config na:

Kod: Zaznacz cały

<VirtualHost *:80> 
    ServerName domena.pl
    DocumentRoot /var/www/domena.pl/public/ 
    ErrorLog /var/www/domena.pl/logs/error.log 
    LogLevel warn 
    CustomLog /var/www/domena.pl/logs/access.log combined 
</VirtualHost>
Druga sprawa, podlinkowałeś pliki zawierające tą konfigurację do katalogu /etc/apache2/sites-enabled/? Przeładowałeś Apache2? Napisz może coś więcej jak to zrobiłeś, bo być może błąd jest w jeszcze innym miejscu.

EDIT. Kurde, znowu mnie ktoś ubiegł. Ech, starość widać ;-)

: 02 czerwca 2009, 16:55
autor: sigo
Przeglądałem podręcznik wielokrotnie. W nocy miałem jakiś problem z myśleniem - wydawało mi się iż ServerName nie jest wymagany.

Całość rozwiązałem poprzez:

Kod: Zaznacz cały

<VirtualHost *:80>
	DocumentRoot /var/www/default/public/
	<Directory /var/www/default/public/>
		Options -Indexes
		AllowOverride All
	</Directory>
	ErrorLog /var/www/default/logs/error.log
	LogLevel warn
	CustomLog /var/www/default/logs/access.log combined
</VirtualHost>

Kod: Zaznacz cały

<VirtualHost *:80>
	ServerName domena.pl
	DocumentRoot /var/www/domena.pl/public/
	<Directory /var/www/domena.pl/public/>
		Options -Indexes
		AllowOverride All
	</Directory>
	ErrorLog /var/www/domena.pl/logs/error.log
	LogLevel warn
	CustomLog /var/www/domena.pl/logs/access.log combined
</VirtualHost>
Wszystko jest podlinkowane do sites-enabled. W ten sposób mogę łatwo zarządzać kolejnymi domenami, dodawać aliasy do aktualnych itd - wystarczy utworzyć nowy plik i utworzyć dowiązanie.

Dziękuję za odpowiedzi.

Poprawka: w pierwszym kodzie, nie jest potrzebne określenie ServerName, gdyż serwer wyłapuje wszystkie nieokreślone adresy, domeny itp. na jedną stronę (określoną w pierwszym kodzie) - przepraszam za powtórzenie, nie potrafiłem tego inaczej ująć.