Objavujem svet:) Tak ako som sa nedávno naučil používať VirtualHost-y pred pár hodinami som si v hlave vyjasnil ďalšiu záhadu a to, ako čo najjednoduchšie nakonfigurovať v Apache subdomény.
Na profesionálnych hostingoch sa to robí tak, že užívateľ má svoj kmeňový adresár pre prezentáciu, napríklad public_html a v ňom napríklad adresár _sub. Akonáhle niekto zadá požiadavku pre obsah povedzme niečo.domena.sk, Apache bude obsah hľadať práve v adresári /domena.sk/public_html/_sub/niečo/.
A toto je práve to, čo som sa snažil dosiahnuť. (nie práve ten variant so _sub, ale na ten princíp, aby som pre každú subdoménu nemusel v apacheovi vytvárať ďalší VirtualHost) Google vyhodí množstvo rád v tomto smere, väčšinou najmä fungujúcich vďaka mod_rewrite. Mne sa však zapáčil iný, podľa mňa ešte jednoduchší, spôsob.
Predpokladajme teda, že máme nainštalovaný apache, teda fungujúci webový server. Ako prvé musíme zapnúť modul vhost_alias a tiež odporúčam predsa len aj mod_rewrite ak ho nemáte aktivovaný.
# a2enmod vhost_alias
# a2enmod rewrite
No a teraz nám už stačí len upraviť konfiguráciu toho ktorého virtualhostu. Napríklad takto:
<virtualhost *:80>
php_admin_value open_basedir "/data/jurajmasarinfo/html"
php_admin_value upload_tmp_dir "/data/jurajmasarinfo/html/tmp"
VirtualDocumentRoot /data/jurajmasarinfo/html/%-3.0+
ServerName jurajmasar.info
ServerAlias *.jurajmasar.info
CustomLog "/data/jurajmasarinfo/access_log" combined
ErrorLog "/data/jurajmasarinfo/error_log"
#redirect na variaciu s www
RewriteEngine on
RewriteCond %{http_host} ^jurajmasar.info [nc]
RewriteRule ^(.*)$ http://www.jurajmasar.info$1 [r=301,nc]
<directory /data/jurajmasarinfo/html/%-3.0+>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</directory>
</virtualhost>
To dôležité som dal strongom. Ako to teda teraz bude vyzerať? No v kmeňovom adresári html bude každý adresár reprezentovať subdoménu. Teda /html/www/ bude obsah pre www.domena.sk a /html/nieco/ bude nieco.domena.sk. Ak človek nezadá žiadnu subdoménu, teda napríklad len http://domena.sk bude automaticky presmerovaný na www verziu, čo je v 99% prípadoch presne to čo chceme (trochu nadnesene by som mohol toto nazvať aj seo-positive riešením
).
ps: nezabudnite ešte nasmerovať na server všetky subdomény v DNS záznamoch
Tags: apache, rewrite, subdomains, subdomény, vhost_alias, VirtualHost, wildcart
akozee vsetko chapem az na
VirtualDocumentRoot /data/jurajmasarinfo/html/%-3.0+
co je toto %-3.0+ ???
uprimne? nemam sajn. a myslim, ze jedina moznost, ako zistit o co ide je rtfm, co sa mi napriek vsetkemu nechce, a aj keby sa mi chcelo, hrozi mi nedostatok spanku
ale ked zoberieme co to realne robi, tak mozem povedat, ze je to vlastne to podstatne, na tom vsetkom.. jednoducho je to nahradene menom subdomeny. inak. prave mi napadlo, ze ta trojka znamena tretiu subdomenu, resp, tretiu “vec” od prava…
sub(3).nieco(2).com(1) teda cislovanie od top level domeny. no kazdopadne, ked to budes chciet viacej rozoberat, tak naozaj myslim ze rtfm sa nevyhnes.
inak este napriklad tip: http://forum.lighttpd.net/topic/5343
mam to:)
http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html
krasne vysvetlene.