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