Apache a automaticke vytvareni sub-domen
Ahojda! Prave resim problem, jak udelat, aby se automaticky vytvarely sub-domeny na zaklade adresarove struktury bez nutnosti editace httpd.conf.
Situace je nasledujici: mam DocumentRoot adresar treba C:\Apache\htdocs\domena.tld\ , kde jsou umisteny stranky pro adresu http://domena.tld . Dale mam v tomto adresari podadresare napr. C:\Apache\htdocs\domena.tld\sub1 a C:\Apache\htdocs\domena.tld\sub2. Potreboval bych, aby se tyto adresare chovaly jako subdomeny domeny domena.tld tj. http://sub1.domena.tld a http://sub2.domena.tld bez jakekoliv nutnosti editovat konfiguracni soubory s moznosti pridani dalsich sub-domen pouhym vytvorenim dalsiho adresare v C:\Apache\htdocs\domena.tld\.
Pomoci Google se mi podarilo zjistit, ze se to resi jednak pomoci RewriteRules a jednak pomoci VirtualHosts (timto jsem to doposud resil staticky editaci httpd.conf). Da se nejak pouzit VirtualHosts, aby bylo vytvareni techto sub-domen dynamicke na urovni adresarove struktury? Napr. na hostingu Pipni.cz to takhle resene maji.
Diky za odpoved! :-)
Re: Apache a automaticke vytvareni sub-domen
Podarilo se mi to vytvorit takhle:
Kód:
<VirtualHost *>
ServerName testdomain.cz
# Zapnuti Rewrite Engine
RewriteEngine on
# Smerovani *.domena.tld -
RewriteCond %{HTTP_HOST} ^testdomain.cz
# - do zvoleneho adresare
RewriteRule ^(.*)$ /www/$1 [L]
# Smerovani www.* -
RewriteCond %{HTTP_HOST} ^www.*
# - do zvoleneho adresare
RewriteRule ^(.*)$ /www/$1 [L]
# Smerovani sub.domena.tld -
RewriteCond %{HTTP_HOST} ^(.*)\.testdomain\.cz
# - do prislusneho sub adresare
RewriteRule ^(.*)$ /%1/$1 [L]
</VirtualHost>
Funguje to tak, ze zadam http://www.testdomain.cz nebo http://testdomain.cz a provede se smerovani do adresare htdocs/www/. V pripade http://cokoliv.testdomain.cz se provede smerovani do htdocs/cokoliv/ - tedy tak, jak bych chtel.
Ma to ale nevyhodu v tom, ze funguji aliasy jen na http://testdomain.cz/alias, jinde ne.
Dale nevim, jak pomoci Rewrite enginu udelat, aby se provedlo presmerovani na http://www.testdomain.cz pri zadani pouze druhe urovne domeny, tj. http://testdomain.cz.
Mohl by me nekdo postrcit spravnym smerem, jak tyhle nedostatky vyresit?
Diky!
Re: Apache a automaticke vytvareni sub-domen
Nakonec jsem to vyresil takto:
Kód:
<VirtualHost *>
ServerName testdomain.cz
RewriteEngine On
# == *.domena.tld ==
# Adresarove Aliasy
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# Smerovani do prislusneho adresare
RewriteCond %{HTTP_HOST} ^(.*).testdomain.cz
RewriteRule ^(.*)$ /%1/$1 [L]
# === -.domena.tld ===
# Adresarove aliasy
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# Smerovani do zvoleneho adresare ("www")
RewriteRule ^(.*)$ /www/$1 [L]
# Presmerovani na www.domena.tld
# RewriteRule ^(.*)$ http://www.testdomain.cz$1 [R]
</VirtualHost>
V prvni casti se zjistuji nazvy domen druheho radu a radi se do prislusneho adresare v DocumentRoot.
Pokud neni zjisten nazev (=prazdny nazev), nastupuje druha cast, ktera na zaklade volby pravidla zakomentovanim bud presmeruje server do zvoleneho adresare, nebo presmeruje prohlizec na domenu druheho radu s nazvem www.
U obou casti musi byt definice vynechani adresarovych aliasu Rewrite modulem, aby aliasy zustaly funkcni.
... a den je v haji :-/
Re: Apache a automaticke vytvareni sub-domen
To jsem potřeboval :)... K+
Re: Apache a automaticke vytvareni sub-domen
Alespon nekomu jsem tim pomohl :-)