PDF Imprimer Envoyer

Subdomain WildcardRewriting

 

Définition du subdomains wildcard rewriting :

Un sous-domaine (subdomain en anglais) est une extension d'un nom de domaine (NDD). Vous avez peut être déjà visité des sites web dont l'adresse était : http://forum.nom_du_site.com. Le sous domaine est ici "forum". Un exemple que vous avez surement tous rencontré est le suivant : wikipedia. Avez vous fait attention à l'adresse des pages françaises, différentes des pages anglaises? Les pages françaises commencent par le sous domaine "fr".

Nous allons donc parler dans cette article de configuration d'un serveur apache pour la gestion "à la volée" de sous domaines : le subdomain wildcard. Le but du jeu sera ici de pouvoir rediriger n'importe quel sous-domaine vers une page qui nous intéresse. Par exemple, si je tape : http://pseudo.mon_site.com, le visiteur tombera sur la page du pseudo associé (pratique dans le cas d'un jeu en ligne).

 

Etape 1 : configuration chez le Registar :

La première étape consiste à dire à votre registar de rediriger tous les sous-domaines de votre site vers le même serveur (celui qui héberge vos pages). Un Registar (pour ceux qui se posent la question) est un gestionnaire de NDD

Créez pour cela un nouveau champ A et remplissez le d'un asterixe (pour signifier que le sous-domaine peut prendre toutes valeurs possibles) *, et faite le pointer sur l'adresse ip de votre serveur. Valider les changements et attendez quelques heures pour que le réseau du web soit informé du changement.

Si vous êtes pressés, vous pouvez tester vos changements grâce au fichier hosts qui se trouve présent sur chaque système d'exploitation et qui redirige de façon spécifique certaines adresse (127.0.0.1 par exemple). Sur Windows, le fichier se trouve dans le répertoire "C:\WINDOWS\system32\drivers\etc". N'oubliez pas de séparer l'adresse de l'ip par un caractère tabulation. Si vous ne le faite pas, votre redirection ne marchera pas. Tapez par exemple :

191.14.22.34 extension.mon_site.com

Etape 2 : configuration Apache :

Vous devez à présent dire à votre Apache qui peut accepter tous les sous-domaines qui pointent vers le serveur. Pour cela, il suffit de rajouter une ligne ServerAlias dans la configuration de base de votre site :

ServerName www.mon_site.com
ServerAlias *.mon_site.com

La première ligne est sensée être une configuration de base pour votre site. La deuxième permet à Apache de récupérer les sous-domaines quelconques.

Après cette modification, redémarrer Apache. Si le changement de l'étape 1 s'est propagé sur le web vous devriez pouvoir tester de suite, sinon, rajouter une ligne à votre fichier host. Tester alors le site en tapant "http://extension.mon_site.com" dans votre navigateur préféré. Si tout marche bien, passez à l'étape suivante, sinon, postez un commentaire ou allez voir sur le web les solutions possibles.

 

Etape 3 : url rewriting :

Vous voilà fin prêt à configurer votre site pour recevoir et traiter de jolis sous-domaines. Pour finir le traitement, rajoutons une règle de URL Rewriting pour que la réponse de votre site dépende de l'extension. Créez une page : redirect.php qui contient le code suivant :

<?php
$id=$_GET['id'];
include("page-$id.php");
?>

Ce script sera à modifier en fonction de vos besoin. Il sert juste à rediriger le visiteur sur une page qui dépend de la variable $id.

Enfin, modifier le .htaccess si vous en avez les droits et rajoutez les lignes :

<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.mon_site.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).mon_site.com [NC]
# RewriteRule (.*) %2/%1 [L]
RewriteRule (.*) redirect.php?id=%2 [L]
</IfModule>

Voilà, c'est fini. Vous pouvez à présent tester votre configuration... si bien sûr vous avez créer une page page-sousdomaine.php correspondant. Sinon, redirigez vers une 404.

Mise à jour le Dimanche, 02 Novembre 2008 07:30
 

Commentaires 

 
0 # Romain 27-10-2011 00:54
Bonjour,
j'aimerais savoir si il est possible de faire fonctionner ce système sans nom de domaine, par exemple http://sousdomaine.12.34.56.78/
Merci d'avance
Répondre | Répondre en citant | Citer
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir