Posts Tagged ‘wildcart’

Dynamické subdomény v Apache


2007
11.03

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 :)