pb syntaxe pour redirection par htaccess

Eléphant du PHP | 112 Messages

22 déc. 2009, 19:27

Bonjour,

Voici une nouvelle question que je viens soumettre à la sagacité des opiniâtres animateurs de ce forum, que je remercie une fois encore pour la peine qu'ils prennent à lire et répondre aux messages des néophytes comme moi qui viennent exposer leur problème.

Pour aujourd'hui:
J'ai trouvé un bout de code, qui, inséré dans le .htaccess, permet de rediriger une page vers une autre.
Options +FollowSymlinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^monsite.com(.*)$
RewriteRule ^(.*) http://www.monsite.com/$1 [QSA,L,R=301]
Ce code permet bien de rediriger l'index de http://monsite.com vers http://www.monsite.com, ainsi que les sous-répertoires de premier niveau vers l'équivalent avec www. En revanche, je ne parviens pas à rediriger les répertoires de niveau inférieur. J'ai testé plusieurs ébauches d'expression régulière pour remplacer (.*), car il me semble que la solution viendrait de là, mais sans succès.

Avez-vous une idée?
Merci d'avance,
Cordialement,

Thierry

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 déc. 2009, 23:08

Qu'est ce que tu entends par "répertoire de niveau inférieur" ? Un "titi.toto.domaine.fr" ou un "toto.domaine.fr/titi" ?

Peux tu nous donner un exemple de l'url saisie et de l'url vers laquelle l'utilisateur doit être redirigé ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 112 Messages

27 déc. 2009, 22:24

Bonjour,

Me revoilà, avec la précision demandée:
J'entends par répertoire de niveau inférieur: domaine/dossier1/dossier2/dossier3 etc.
La syntaxe mentionnée:
RewriteCond %{HTTP_HOST} ^monsite.com(.*)$
RewriteRule ^(.*) http://www.monsite.com/$1 [QSA,L,R=301]
ne permet de rediriger, en plus de domaine.php et des autres fichiers situés à la racine du répertoire, que les fichiers inclus dans dossier1, mais pas au delà.
J'ai essayé différents bidouillages avec les regex, mais sans succès...
Merci,

Thierry

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 déc. 2009, 22:00

Personnellement j'utilise cette règle là :

Code : Tout sélectionner

RewriteCond %{HTTP_HOST} ^monsite.com [NC] RewriteRule ^(.*)$ http://www.monsite.com/$1 [R=301,NC]
Ca me redirige bien http://monsite.com/dir1/dir2/fichier.txt vers http://www.monsite.com/dir1/dir2/fichier.txt. C'est bien ce que tu veux faire ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 112 Messages

06 janv. 2010, 01:25

Merci, Ryle, pour cette précision qui répond exactement à mes attentes.
Avec tous mes remerciements, et je profite de ce qu'ils sont bien tardifs, pour y ajouter tous mes voeux;
cordialement

Thierry

PS: Il faudra m'expliquer, une bonne fois, où cliquer pour coller le tag "résolu"....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 janv. 2010, 23:43

Pour indiquer que ta question est résolue et que le sujet contient une solution, il te faut cliquer sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...