publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
skomentuj »

TAGI: apache , subdomena , rewrite engine

2010-02-19 20:27  |  Adam Golański

Jak dynamicznie przekierowywać subdomeny do katalogów? [RewriteEngine]

Jak dynamicznie przekierowywać subdomeny do katalogów? [RewriteEngine]

Jeśli chcemy utworzyć wiele subdomen w naszym serwisie, tak by każda z nich związana była z innym katalogiem na serwerze (mogą to na przykład być katalogi poszczególnych użytkowników), każdą nową subdomenę trzeba dodawać ręcznie do konfiguracji. Sprytne wykorzystanie RewriteEngine pozwala obejść ten problem.

W pliku konfiguracyjnym serwera Apache (apache.conf lub httpd.conf – jeśli mamy dostęp do globalnej konfiguracji, lub .htaccess, jeśli korzystamy ze współdzielonego hostingu), ustalamy opcję DocumentRoot, określającą, gdzie kierowane są wszystkie żądania. Tam będą znajdowały się wszystkie katalogi wszystkich subdomen.

DocumentRoot /var/www/

Następnie otwieramy sekcję VirtualHost – w niej określimy nazwę serwera i reguły, według których RewriteEngine będzie przepisywał domenowe adresy. Wcześniej jednak zdefiniujemy opcje ServerAlias i ServerName – czyli nazwa domenowa, skonfigurowana na serwerze DNS, na którym domena jest utrzymywana.

ServerName www.mojastrona.pl
ServerAlias www.mojastrona.pl

Po włączeniu RewriteEngine, definiujemy następujące reguły:

RewriteCond %{HTTP_HOST} ^mojastrona.pl
RewriteRule ^(.*)$ /var/www/$1 [L]

W ten sposób przekierowujemy adres bez subdomen do katalogu /var/www/.

RewriteCond %{HTTP_HOST} ^www.*
RewriteRule ^(.*)$ /var/www/$1 [L]

W ten sposób zabezpieczamy się, aby typowa subdomena www prowadziła do tego samego katalogu, co główna domena,

RewriteCond %{HTTP_HOST} ^(.*)\.mojastrona\.pl
RewriteRule ^(.*)$ /%1/$1 [L]

Finalna reguła pozwala nam na przekierowanie z każdej subdomeny do odpowiedniego podkatalogu.

Teraz wystarczy tylko ustawić domenę z wieloznacznikiem w DNS (wildcard). Jak to dokładnie zrobić – zależy od hostera i panelu konfiguracyjnego ale generalnie w pliku strefy powinien znaleźć się wpis taki jak

*.mojastrona.pl CNAME 3600 mojastrona.pl

Teraz adres www.mojadomena.pl będzie prowadził do katalogu /var/www/, zaś adres alfa.mojadomena.pl będzie prowadził do katalogu /var/www/alfa.

Cały plik konfiguracyjny wygląda więc następująco:

DocumentRoot /var/www/

<VirtualHost *>
ServerAlias www.mojadomena.pl
ServerName www.mojadomena.pl
RewriteEngine  on
RewriteCond    %{HTTP_HOST}  ^mojadomena.pl
RewriteRule    ^(.*)$        /var/www/$1 [L]
RewriteCond    %{HTTP_HOST}  ^www.*
RewriteRule    ^(.*)$        /var/www/$1 [L]
RewriteCond    %{HTTP_HOST}  ^(.*)\.mojadomena\.pl
RewriteRule    ^(.*)$        /%1/$1 [L]
</VirtualHost>
publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
skomentuj »

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł