htaccess et gestion des sous-domaines

htaccess et gestion des sous-domaines - Divers - Programmation

Marsh Posté le 19-03-2008 à 12:42:04    

Bonjour,
 
Je me permets de vous demander un peu d'aide du fait de mon incapacité à rédiger un .htaccess correct.
J'ai pourtant lu de nombreux exemples ainsi que la documentation Apache, mais rien n'y fait...  
 
 
Actuellement, 3 domaines pointent sur le même espace d'hébergement.
 
Je souhaite réaliser 3 sites différents possédant chacun des sous-domaines.
 
 
Ce que je cherche à avoir :
 
L'utilisateur demande http://www.domaine1.fr, le dossier pointé est /domaine1/www/
L'utilisateur demande http://www.domaine2.fr, le dossier pointé est /domaine2/www/
L'utilisateur demande http://www.domaine3.fr, le dossier pointé est /domaine3/www/
 
L'utilisateur demande http://toto.domaine1.fr, le dossier pointé est /domaine1/toto/
L'utilisateur demande http://blabla.domaine2.fr, le dossier pointé est /domaine2/blabla/
L'utilisateur demande http://nutnut.domaine3.fr, le dossier pointé est /domaine3/nutnut/
 
 
 
J'ai bien trouvé un script qui gére ces sous-domaines (et qui fonctionne), mais il ne distingue pas les 3 domaines :
 
RewriteEngine on
# redirection des sous-domaines
RewriteCond %{REQUEST_URI} !^/sdoms
RewriteCond %{HTTP_HOST} ^([^.]*)\.?[^.]+\.[^.]+$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /sdoms/%1/$1
 
 
 
 
Merci d'avance pour votre aide !

Message cité 1 fois
Message édité par Gum le 19-03-2008 à 12:45:23
Reply

Marsh Posté le 19-03-2008 à 12:42:04   

Reply

Marsh Posté le 22-04-2008 à 11:07:42    

Gum a écrit :


RewriteCond %{HTTP_HOST} ^([^.]*)\.?[^.]+\.[^.]+$ [NC]


 
Bonjour,
 
Si je ne me trompe pas, ici tu ne stocke que le texte avant le 1er "." dans la variable $1 (ce sont les parenthèses de mémoire qui permettent de définir ce qui est stocké), du coup tu ne fais aucun test sur le domaine qui lui vient après.
 
ton domaine est de la forme [sous domaine] . [nom du domaine] . fr
 
ton code là ne fait que stocké la partie [sous domaine], donc tu sais dissocier les sous domaines mais pas les domaines.
Il faudrait en plus récupérer la partie [nom du domaine] et la traiter pour différencier les domaines.
 
il faudrait avoir quelque chose du genre

Code :
  1. RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+)\.[^.]+$ [NC]

et faire des test sur $2 pour différencier les domaines.
 
A confirmer parce que je n'ai fait que quelque recherche sur le rewriting sans jamais l'avoir vraiment pratiquer, et un peu de regexp...


Message édité par uncle buzz le 22-04-2008 à 11:10:34
Reply

Marsh Posté le 22-04-2008 à 14:16:57    

J'avais à peu près la même analyse du code, mais je ne savais pas comment le modifier pour stocker les différentes parties.
 
A priori, l'ajout de ces 2 parenthèses permet de stocker le [nom de domaine] en  %2 ?
 
J'essayerai ce soir ;)
 
Merci en tous cas pour la réponse :)

Reply

Marsh Posté le 23-04-2008 à 17:47:36    

Ca marche !  :bounce:  
 


RewriteEngine on  
 
# corrige le problème des slashs manquants en fin d'URL
 
RewriteCond %{REQUEST_URI} (/[^.]+)[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]
 
 
# rajoute les www s'ils ont été oubliés
 
RewriteCond %{HTTP_HOST} ^domaine1.fr$ [nc]
RewriteRule ^(.*) http://www.domaine1.fr$1 [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ^domaine2.fr$ [nc]
RewriteRule ^(.*) http://www.domaine2.fr$1 [QSA,L,R=301]
 
 
# redirection des sous-domaines de domaine1
 
RewriteCond %{REQUEST_URI} !^/domaine1
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+)\.[^.]+$ [NC]
RewriteCond %2 !^domaine2$ [NC]  
RewriteRule ^(.*)$ /domaine1/%1/$1  
 
 
# redirection des sous-domaines de domaine2
 
RewriteCond %{REQUEST_URI} !^/domaine2
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+)\.[^.]+$ [NC]
RewriteCond %2 !^domaine1$ [NC]  
RewriteRule ^(.*)$ /domaine2/%1/$1  


 
Ce n'est peut-être pas la solution la plus propre, mais elle fonctionne totalement et remplit sa fonction.
 
Grand merci à toi :hello:


Message édité par Gum le 23-04-2008 à 17:48:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed