Redirection nouveau domaine htaccess

Signaler
Messages postés
30
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
27 octobre 2010
-
Messages postés
30
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
27 octobre 2010
-
Bonjour !
Je vous expose mon problème corsé :

Chaque client de mon site possède son propre espace, il accède à ses rubriques par les url suivante :

CLIENT 1 :
monsite.com/index.php?compte=client1&page=rubrique1 (que j'ai transformé en monsite.com/client1/rubrique1.htm grace à mon htaccess)
monsite.com/index.php?compte=client1&page=rubrique2
monsite.com/index.php?compte=client1&page=rubrique3&souspage=sousrubrique1 (que j'ai transformé en monsite.com/client1/rubrique3,sousrubrique1.htm grace à mon htaccess)
monsite.com/index.php?compte=client1&page=rubrique3&souspage=sousrubrique2 (que j'ai transformé en monsite.com/client1/rubrique3,sousrubrique2.htm grace à mon htaccess)
...

CLIENT 2 :
monsite.com/index.php?compte=client2&page=rubrique1
monsite.com/index.php?compte=client2&page=rubrique2
monsite.com/index.php?compte=client2&page=rubrique3
...

J'aimerais, grace à mon fichier htaccess et aux expressions régulières attribuer un nom de domaine à chaque client :

CLIENT 1 :
nvodomaine.com/rubrique1.php (qui donne accès à monsite.com/index.php?compte=client1&page=rubrique1)
nvodomaine.com/rubrique2.php (qui donne accès à monsite.com/index.php?compte=client1&page=rubrique2)
nvodomaine.com/rubrique3,sousrubrique2.php (qui donne accès à monsite.com/index.php?compte=client1&page=rubrique3&souspage=sousrubrique2)
...

C'est là ou je bloque.
Sur l'interface de mon hébergement, je peux attribuer un sous dossier de mon espace web à un domaine, pas de soucis (il prendra comme page par défaut l'index.php du sous dossier comme page d'accueil), mais ce que j'aimerais c'est qu'il prenne par défaut l'index.php avec mes variables GET.
Il faudrait en fait que je fasse pour le client1 qqe chose du style :

Redirect permanent /index.php?compte=client1&page=([0-9a-zA-Z_]+) http://www.nvodomaine.com/$1.htm
Redirect permanent /index.php?compte=client1&page=([0-9a-zA-Z_]+)&souspage=([0-9a-zA-Z_]+) http://www.nvodomaine.com/$1,$2.htm

Je m'y perds, c'est corsé !
Merci pour votre aide

6 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Salut

RewriteCond is your friend.

Mais à ne pas mettre dans le .htaccess, plutôt dans la configuration de chaque domaine.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
30
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
27 octobre 2010

Je ne te suis pas trop là, peux-tu m'orienter vers un tuto ou m'expliquer s'il te plait ?
Merci.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Ben tu prends le problème à l'envers. Tu n'es pas le seul, il y a eu une question similaire il y a quelques jours à peine.
Tu ne rediriges pas vers le domaine du client, mais le domaine du client doit correspondre à une URL avec des variables GET.
Autrement dit, tu ne dois pas rediriger
/index.php?compte=client1&page=([0-9a-zA-Z_]+)&souspage=([0-9a-zA-Z_]+)
vers
http://www.nvodomaine.com/$1,$2.htm

Mais réécrire
http://www.nvodomaine.com/$1,$2.htm
comme étant l'URL
/index.php?compte=client1&page=([0-9a-zA-Z_]+)&souspage=([0-9a-zA-Z_]+)

En fait, y'a même pas besoin de RewriteCond, au temps pour moi.
Dans le fichier de configuration de chaque domaine, il suffit de :

RewriteRule http://www.nvodomaine.com/([^,]+),([\.]+)\.htm$ /index.php?compte=CLIENT&page=$1&souspage=$2 [L]

La question qu'il faut se poser est la suivante : quelle est l'adresse que je souhaite avoir dans le navigateur ? => c'est le premier argument de RewriteRule
La deuxième question est : à quoi est-ce que je souhaite qu'elle corresponde pour que les variables puissent être comprises par le serveur ? => c'est le deuxième arugment de RewriteRule

Il faut bien distinguer le domaine, qui n'est qu'une adresse dans une barre du navigateur, et les fichiers physiques sur le disque dur du serveur. C'est pour cette raison qu'il faut mettre cette règle de réécriture dans le fichier de configuration de CHAQUE Vhost Apache, c'est à dire dans le fichier de configuration de CHAQUE domaine que tu héberges : le .htaccess est commun à tous les domaines, puisque c'est un fichier physique. Les règles de réécriture dans les fichiers de conf des vhosts sont, elles, propres à chaque domaine : inutile alors de vérifier le nom du domaine ou quoi, tu le connais forcément, puisque c'est le même que la directive ServerName ou ServerAlias.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
30
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
27 octobre 2010

Merci pour cette explication très claire et très complète.
Cependant, je possède un espace web 1&1 mutualisé.
Donc est-ce que je peux modifier le fichier de configuration de chaque Vhost Apache ?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Je ne sais pas précisément... Il me semle me souvenir que oui, mais j'ai oublié à quoi ressemble l'interface.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
30
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
27 octobre 2010

Je ne trouve pas dans l'interface 1&1.
Je ne pense pas que l'option soit dispo dans mon pack perso initial.

Encore merci pour tes éclairages