Sur votre serveur virtuel, vous avez installé apache, php, mysql, c’est super mais pas moyen de faire fonctionner plusieurs sites et de faire pointer vos noms de domaine ( et sous domaines ) vers vos différents répertoires dans /var/www/html
Pas de panique, voici la solution.
Ce tuto est destiné à un serveur de prod, un vps hébergé chez NovaHoster, mais vous pouvez très bien le transposer à un autre serveur.
1 . Le nom de domaine
Dans votre espace client NovaHoster, sélectionnez le nom de domaine : votredomaine.com … c’est un exemple, j’aime la saucisse mais pas au point de payer un tribut à l’AFNIC pour autant.
Dans l’onglet “Zone DNS” vérifiez que votre domaine votredomaine.com a été créé avec le type A et le type AAAA qui pointe bien vers les IP de votre VPS. ( type A = IPv4 & le type AAAA IPv6 )
Si vous voulez ajouter un sous domaine, un petit clic sur le bouton “Ajouter une entrée“, choisir dans “champs de pointage” le bouton “A” puis tapez votre sous domaine (test.votredomaine.com ) et l’IPv4 de votre VPS comme “Cible“. Et c’est tout pour la gestion du domaine.
2 . Le stockage
Si je peux me faire mettre un conseil, créez un dossier par domaine. Et de sous dossiers pour chaque domaine et ses sous domaines.
cd /var/www/html
sudo mkdir votredomaine.com
# Puis un sous dossier pour le site et un autre pour son sous domaine
sudo mkdir www
sudo mkdir test
et attribuer les dossiers à l’utilisateur www-data
sudo chown -R www-data:www-data /var/www/html
3 . VirtualHost
Niveau apache, deux règles à respecter pour mieux s’y retrouver.
Premièrement, le nom du virtual host doit être identique au nom de domaine, c’est à dire :
cd /etc/apache2/sites-available/
sudo nano votredomaine.com.conf
Et deuxièmement, les sous domaines cohabitent dans le même fichier de configuration.
Un copié / collé sauvage avec ceci :
<VirtualHost *:80>
ServerName votredomaine.com
ServerAlias www.votredomaine.com
ServerAlias *.votredomaine.com
ServerAdmin webmaster@votredomaine.com
DocumentRoot "/var/www/html/votredomaine.com"
<Directory /var/www/html/votredomaine.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
RewriteEngine on
# Domaine principal, redirection vers dossier /www/
RewriteCond %{HTTP_HOST} ^votredomaine\.com
RewriteRule ^(.*) /www/$1 [L]
# Sous-domaine(s), redirection vers les sous dossiers
RewriteCond %{HTTP_HOST} ^([^\.]+)\.votredomaine\.com
RewriteCond /var/www/html/votredomaine.com/%1 -d
RewriteRule ^(.*) /%1/$1 [L]
</VirtualHost>
Reste à activer avec :
a2ensite votredomaine.com.conf
sudo service apache2 restart
Et ça marche !
Pour ajouter un nouveau sous-domaine, plus besoin de toucher au virtual host, un nouveau dossier dans /var/www/html/votredomaine.com portant le même nom que le sous domaine et le tour est joué.