Agence web et solutions IT, Experts Symfony contact@avanim-prod.com

Gérer ses sous domaines avec HTACCESS

4 mai 2011 jravouna Référencement - SEO, Symfony Étiquettes : , , , 1 Comment

Nous allons voir dans cet article, comment gérer ses sous domaines grâce au HTACCESS de apache et du mod_rewrite. Le principe étant de faire une redirection transparente en utilisant le mod_proxy de apache.

La problématique intervient quand nous désirons créer des sous domaines pointant sur des adresses virtuelles ou réécrites, ce qui pose un problème sur certain hébergeur notamment OVH ou 1AND1 sur des serveurs mutualisés.
PS : ces hébergeur proposent une gestion de sous domaine ou multidomaine mais qui ne permets pas de rediriger sur des pages du site principal.

1/ Définition des besoins

Nous allons prendre l’exemple du site AVANIM. Pour des raisons personnelles, nous avons voulu créer des sous domaines virtuels sur notre hébergement. Je précise que ce dernier est un mutualisé OVH.

L’idée est de faire pointer le nom de domaine « creation-site-internet.avanim-prod.com » sur la page « www.avanim-prod.com/creationsiteinternet.html ». Notre site étant sous le framework Symfony, ces URL sont réécrites par le système de routing et ne peuvent donc pas être paramétrées dans le manager OVH.

2/ La technique

Nous allons éditer notre fichier .htaccess se trouvant dans le repertoire www/ (le répertoire web de symfony à été changé pour l’occasion en www/ pour se conformer à la configuration des VHOSTS de OVH.

Dans notre fichier .htaccesss, insérons les lignes suivantes :

  RewriteCond %{HTTP_HOST} ^creation-site-internet.avanim-prod.com$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ http://www.avanim-prod.com/creation-site-internet.html [P]

Quelques explications :

Ligne 1 = Nous indiquons à apache que nous désirons matcher le nom de domaine « creation-site-internet.avanim-prod.com » sans vérification de casse [NC]
Ligne 2 = Nous indiquons à apache que nous ne tenons pas cas des demandes aux images et autre fichier
Ligne 3 = Nous demandons à apache d’aller chercher l’adresse réelle mais afin que notre adresse ne change pas sur notre navigateur, nous lui demandons de passer par le mod_proxy de apache et de nous renvoyer la réponse [P]

3/ Sécurisation contre le duplicate content

Comme certain le savent, si notre amis Google venait à parcourir certaines pages de notre site ayant le même contenu, il nous infligerait une pénalité pour duplicate content. Nous allons donc demander à apache de traiter les demandes d’adresses sur notre sous domaine et de les rediriger vers l’adresse racine.

Editons notre fichier .htaccess :

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !^/$
  RewriteCond %{HTTP_HOST} ^creation-site-internet.avanim-prod.com$ [NC]
  RewriteRule ^(.*)$ http://creation-site-internet.avanim-prod.com [L,R=301]

Explication :

Ligne 1 = Idem qu’au dessus
Ligne 2 = Nous matchons la règle uniquement s’il ne s’agit pas de la page racine
Ligne 3 = Nous vérifions que le nom de domaine est bien celui du sous domaine en question
Ligne 4 = Nous redirigeons sur l’adresse qui sera matcher par la règle précédente

4/ Testons !

Pour tester notre config allons sur :
1 = http://creation-site-internet.avanim-prod.com = Nous tombons bien sur la page en question sans changement d’URL apparente
2 = http://creation-site-internet.avanim-prod.com/pouetpouet.php = Nous sommes bien rediriger et renvoyer sur la racine

Voili voilou !!

Les comments sont bienvenus 🙂

1 Comment

  1. DAMIEN 1 année Répondre

    Bonjour,

    Merci pour cette explication…
    De mon côté cela ne fonctionne pas, pourtant j’ai appliqué les conseils :

    RewriteCond %{HTTP_HOST} ^redirectionboutique\.mondomaine.com\.com/([0-9]+)$
    RewriteRule ^(.*) http://www.mondomaine.com/out$1.html [L]

    Je souhaite que les urls : redirectionclient.mondomaine.com/XXXX (XXXX est une numéro de client)
    redirige vers http://www.mondomaine.com/outXXXX.html.

    Merci d’avance !!