Dynamické subdomény v Apache

03. 11.
2007

WWW 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: , , , , , ,

3 komentárov k “Dynamické subdomény v Apache”

  1. zero0x hovorí:

    akozee vsetko chapem az na

    VirtualDocumentRoot /data/jurajmasarinfo/html/%-3.0+

    co je toto %-3.0+ ???

  2. thomm hovorí:

    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

    :)

Váš komentár