Siti web multipli senza VHOSTs
Premessa
Vi siete mai domandati come fare a gestire più siti web differenziandoli in base al dominio di terzo livello? Ma, prima di tutto, sapete cosé un dominio di terzo livello?
Risponderò all’ultima domanda con un esempio: www nell’url www.google.com. Per maggiori informazioni, click here.
Quando ho deciso di rispondere a questa domanda, come funzionasse il meccanismo mi era più o meno chiaro a livello di architettura distribuita dei DNS: quello che mi domandavo era se fosse possibile creare più siti web sulla stessa macchina, senza dover ricorrere alla tecnica dei Virtual Host (non tutti hanno a disposizione un server con IP pubblico su cui possono creare a piacimento VHOST).
A chi si rivolge questo HOWTO
Questo howto si rivolge ad una utenza italiana: a chi vuole avere “di più” dal suo sito web ma non sa un acca di inglese e quindi necessita di essere portato per mano.
Consiglio comunque CALDAMENTE di leggere qualche cosa dai link che sono sparsi per la guida e da cui ho attinto per riuscire nel mio scopo: il 99% dei link a cui rimando sono su Wikipedia, l’enciclopedia online liberamente accedibile e modificabile, ricca di documentazione tecnica che si rivela quasi sempre utile e precisa.
Requisiti minimi
- Un dominio di secondo livello regolarmente registrato (es.,
detronizator.org) - Un servizio di Hosting SERIO che:
Io uso come hoster TopHost: hosting italiano di buon livello che si é dimostrato molto attento alle esigenze degli utenti più esperti.
Passo 01: creare le directory dei siti
Per avere più siti sullo stesso host, per prima cosa dovete creare più directory, una per ogni sito web.
Io ho creato 2 directory dentro la DocumentRoot del mio sito web (~/htdocs/ in questo caso): la DocumentRoot é la directory in cui l’hoster vi indica di mettere i file del vostro sito per essere visibili nel web. Ecco il layout della root directory del mio sito:
.
..
.htaccess < - Il file più importante
home/ <- Root di detronizator.org (http://[home|www].detronizator.org)
downloads/ <- Root della sezione downloads (http://downloads.detronizator.org)
A questo punto, le vostre directory saranno accessibili tramite http://<vostro dominio>/<vostra directory>/.
Potrebbe bastarci ma… noi vogliamo di più!
Passo 02: creare i DNS Hostname
Questo é il passo dove posso aiutarvi di meno: ora é necessario disporre di un Hoster che vi permetta di gestire liberamente i DNS Hostname per il vostro dominio. Il mio mi permette di farlo tramite un opportuno (e comodissimo) cPanel.
Ma, prima di proseguire, un paio di puntualizzazioni:
- Un DNS Hostname é il nome DNS registrato per la macchina (il server) che ospita il vostro sito: con “registrato” si intende che esiste un server DNS che contiene una nome che punta all’IP del server.
- I tipi pricipali di entry in un DNS possono essere un “A” o un “CNAME“: A é proprio una coppia (nome, ip) ed é unico; CNAME (Canonical Name) é un alias verso un A, ed é solitamente una “variazione” del dominio di terzo livello (anche detto “nome macchina”).
- Poiché su un Server di Hosting ci sono più siti, l’indirizzo di ogni sito é un CNAME verso l’unico A di quel server.
Date queste definizioni, si tratta di fare una cosa molto semplice (se avete un pannello di configurazione
): creare un nuovo CNAME (Canonical Name) che punta al vostro hostname.
Ipotizzando di creare un CNAME “pippo” ed un altro “pluto” che punta al vostro dominio “vostro.org“, alla fine dovreste ottenere che:
www.vostro.org pippo.vostro.org pluto.vostro.org
riportino al medesimo sito.
Quindi ora disponete di un “sito con 3 indirizzi diversi”.
Passo 03: configurazione file .htaccess
Come su detto, é necessario che il vostro hoster abbia abilitato (o, meglio, non disabilitato) l’uso di .htaccess per i suoi utenti, e che abbia inserito il modulo Mod Rewrite in Apache.
Notare: se avete una buona conoscenza di regexp (Regular Expression per i più preparati), capirete meglio il contenuto del file di seguito riportato. Io non sono una cima delle regexp
.
Ecco il contenuto del mio .htaccess:
RewriteEngine On # Attiva il supporto Rewrite
RewriteBase / # URL Base da cui far partire il rewrite
RewriteCond %{HTTP_HOST} www.detronizator.org # Regola 01 START
RewriteCond %{REQUEST_URI} !home/
RewriteRule ^(.*)$ home/$1 # Regola 01 END
RewriteCond %{HTTP_HOST} home.detronizator.org
RewriteCond %{REQUEST_URI} !home/
RewriteRule ^(.*)$ home/$1
RewriteCond %{HTTP_HOST} downloads.detronizator.org
RewriteCond %{REQUEST_URI} !downloads/
RewriteRule ^(.*)$ downloads/$1
A parte il codice di attivazione del Rewrite engine, le regole consistono di 3 semplici linee di codice:
- Criterio di selezione: DNS Host address da redirigere
RewriteCond %{HTTP_HOST} <dns_hostname_registrato in precedenza> - Criterio di selezione: URL che terminano con “home/”
RewriteCond %{REQUEST_URI} !<directory_a_cui_redirigere>/ - Regola da eseguire: rigirare le richieste alla directory
./home/RewriteRule ^(.*)$ <directory_a_cui_redirigere>/$1
Passo 04: Chiedere scusa ai più esperti
Prima ancora di ricevere commenti denigratori sulla non eccellente qualità tecnica dell’howto, chiedo scusa a tutti gli utenti più esperti per la povertà di tecnicismi di questo articolo: il mio scopo era dare una possibilità a chi é meno “preparato”.
Fine
That’s all!
Enjoy!

about 2 months ago
Ciao, anche io giro su Tophost…. C’è la possibilità di far creare ad un utente un suo sottodominio in automatico senza che io intervenga in maniera manuale?
Ho letto che serve il wildcard dns…. Tophost lo fornisce questo servizio? Ho aperto un ticket con il supporto tophost ma non mi hanno ancora risposto… Se così non fosse, esiste qualche script che possa intervenire in tal senso?
about 2 months ago
Onestamente ho abbandonato Tophost da 2 anni quasi e ne sono contento.
Non saprei proprio come risolvere il tuo problema: di sicuro deve essere il DNS maintainer a fornirti il servizio del wildcard DNS.
Ciao