11.9.2007 01:35
Dlouho jsem na netu hledal, našel jen střípky a povedlo se mi z toho stvořit funkční automatické tvoření domén třetího řádu (ashus.net/chat > chat.ashus.net a podobně) všech existujících podadresářů. Pro rozjetí je třeba Apache2 webserver a mod_rewrite plugin (standardně v instalačním balíku, stačí povolit).
Dále připravíme náš konfigurační soubor v sites podle tohoto:
Nakonec nezapomeňte přidat DNS záznam k vaší doméně (A záznam *.ashus.net > IPadr). Moc hezky to jde v administraci Forpsi (na Pipni si ani nepipnete).
Pokud si přečtete manuál k RewriteCond, bude vám jasné, že: ! je negace, ^ je začátek řetězce, $ je konec řetězce a každá tečka se musí escapovat na "\.". Je to tedy jeden z regexpů.
Každé "RewriteEngine On" resetuje předchozí podmínky a začne novou sadu podmínek.
Proměnná SERVER_NAME odpovídá adrese serveru "chat.ashus.net", IP adrese nebo i "chat_u_ashe" (pokud přistupujeme přes název v hosts).
Proměnná REQUEST_URI obsahuje celé URI za názvem serveru včetně lomítka.
Hodně zdaru a trpělivosti, příkladů tady máte snad dost.
Dále připravíme náš konfigurační soubor v sites podle tohoto:
Code:
ServerName www.ashus.net
#pokud směrujeme ze staré domény na novou - ashw.info > ashus.net
RewriteEngine On
RewriteCond %{SERVER_NAME} ([^.]+)\.ashw\.info$
RewriteRule ^/(.*)$ http://%1.ashus.net/$1 [R=301]
#vstup do vybraných adresářů přesměruje na https
RewriteEngine On
RewriteCond %{SERVER_NAME} \.ashus\.net$
RewriteCond %{SERVER_NAME} ^mail\. [OR]
RewriteCond %{REQUEST_URI} ^/(admin|client|mail).*/
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI}
#vstup na hlavní www server do adresáře /ashus > ashus.ashus.net
RewriteEngine On
RewriteCond %{SERVER_NAME} ^www\.ashus\.net$
RewriteCond %{REQUEST_URI} ^/ashus/
RewriteRule ^/ashus/(.*)$ http://ashus.ashus.net/$1 [R=301]
#ip adresa > http://www.ashus.net/
RewriteEngine On
RewriteCond %{SERVER_NAME} ^\[[0-9a-f:]+\]$ [OR]
RewriteCond %{SERVER_NAME} ^([0-9\.]+)$
RewriteRule ^/(.*)$ http%{ENV:secure_char}://www.ashus.net/$1 [R=301,L]
#odstranujeme www pokud se nejedna o domovskou adresu
#napr. www.ashus.ashus.net > ashus.ashus.net
RewriteEngine On
RewriteCond %{SERVER_NAME} !^www\.ashus\.net$
RewriteCond %{SERVER_NAME} ^www\.(.*)
RewriteRule ^(.*) http://%1$1 [R,L]
#pridavame www pokud se jedna o domovskou adresu
#tj. ashus.net > www.ashus.net
RewriteEngine On
RewriteCond %{SERVER_NAME} ^ashus\.net$
RewriteRule ^(.*) http://www.ashus.net$1 [R,L]
#tvoříme third level domény ze všeho, co tu není ve výjímkách
RewriteEngine On
#zbytek názvu serveru musí být ashus.net (jinak by mohly vznikat chyby)
RewriteCond %{SERVER_NAME} \.ashus\.net$
#veškeré www.ashus.net funguje jako bez www, netvoříme zbytečný adresář /var/www/www
RewriteCond %{SERVER_NAME} !^www\.
#doména ap funguje jako www - je vyjímka
RewriteCond %{SERVER_NAME} !^ap\.
#ikony pro indexy adresářů a chybové hlášky jsou globální po všechny domény
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/error/
#nepotřebujeme více css stylů, globální pro všechny domény
RewriteCond %{REQUEST_URI} !^/css.css$
#načteme začátek názvu serveru až po první tečku = název podadresáře
RewriteCond %{HTTP_HOST} ^([^.]+)\.
#provádíme obecné redirecty do adresářů
RewriteRule ^/(.*)$ /%1/$1 [L]
Nakonec nezapomeňte přidat DNS záznam k vaší doméně (A záznam *.ashus.net > IPadr). Moc hezky to jde v administraci Forpsi (na Pipni si ani nepipnete).
Pokud si přečtete manuál k RewriteCond, bude vám jasné, že: ! je negace, ^ je začátek řetězce, $ je konec řetězce a každá tečka se musí escapovat na "\.". Je to tedy jeden z regexpů.
Každé "RewriteEngine On" resetuje předchozí podmínky a začne novou sadu podmínek.
Proměnná SERVER_NAME odpovídá adrese serveru "chat.ashus.net", IP adrese nebo i "chat_u_ashe" (pokud přistupujeme přes název v hosts).
Proměnná REQUEST_URI obsahuje celé URI za názvem serveru včetně lomítka.
Hodně zdaru a trpělivosti, příkladů tady máte snad dost.
Coffee phreak!