RewriteRule & répertoire

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Winks
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 6 Juil 2009

RewriteRule & répertoire

Message le Ven Juil 17, 2009 4:56

Bonjour à tous,
je découvre peu à peu l'url rewriting et je suis confronté depuis quelques heures à un problème sans trouver de réponse ici ou ailleurs... J'aimerais faire cohabiter plusieurs règles qui, séparément fonctionnent. Mais qui, une fois dans le même ficher .htaccess renvoient vers une 404.

La première règle c'est :
Code: Tout sélectionner
RewriteRule ^(.*)\.html$ /$1.php [QSA,L,R=301]
Elle me permet de réécrire tous mes fichiers php en fichier html

La deuxième comporte très certainement une faille. J'aimerais accèder à l'index du répertoire rep1 depuis la racine du site
ex: ../rep1.html à la place de ../dir/rep1/index.php
=> est ce bien :
Code: Tout sélectionner
RewriteRule ^(.*)\.html$ /dir/$1/index.php [QSA,L,R=301]


Enfin, la 3eme ressemble fortement à la 2ème mais est un peu plus complexe.
ex: ../rep1-rep2.html à la place de ../dir/rep1/rep2/index.php
=> est ce bien :
Code: Tout sélectionner
RewriteRule ^(.*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]


Où ai je faux svp? Je n'arrive pas à voir ou je fais une (des) errreurs. Pourriez vous m'aider svp... :oops:


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 8:03

attention car les règles sont évaluées dans l'ordre. La première qui "match" est appliquée. Les deux premières règles ne sont pas compatibles sans ajouter une condition. Essaye d'ajouter une condition pour tester si le fichier .php existe :
Code: Tout sélectionner
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*)\.html$ /$1.php [QSA,L,R=301]
RewriteCond %{DOCUMENT_ROOT}/dir/$1/index.php -f
RewriteRule ^(.*)\.html$ /dir/$1/index.php [QSA,L,R=301]
RewriteCond %{DOCUMENT_ROOT}/dir/$1/$2/index.php -f
RewriteRule ^(.*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]

Winks
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 6 Juil 2009

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 13:03

nickel forty!! Ca fonctionne impec!

MERCI !!


sinon j'avais mis un paramètre en trop ("R=301") pour ce que je veux faire.
Dernière édition par Winks le Ven Juil 17, 2009 13:11, édité 1 fois.

Winks
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 6 Juil 2009

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 13:10

j'ai encore un petit probleme svp. Lorsqu'il y a un tiret ("-") dans le répertoire 2, j'ai une erreur 404... Ca doit être le "(.*)" qu'il faut modifier ?


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 13:18

essaye (il ne peut pas y avoir de tiret dans répertoire 1) :
Code: Tout sélectionner
RewriteRule ^([^-]*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]

Winks
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 6 Juil 2009

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 14:31

forty a écrit:essaye (il ne peut pas y avoir de tiret dans répertoire 1) :
Code: Tout sélectionner
RewriteRule ^([^-]*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]


le souci c'est que dans presque tous mes répertoires $1, il y a un tiret :twisted:

et il y a en a 1 fois sur 2 dans mes répertoires $2


il y a une solution stp? :oops:


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 14:45

essaye avec :
Code: Tout sélectionner
RewriteCond %{DOCUMENT_ROOT}/dir/$1/$2/index.php -f
RewriteRule ^([^-]*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]
RewriteCond %{DOCUMENT_ROOT}/dir/$1/$2/index.php -f
RewriteRule ^([^-]*-[^-]*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L,R=301]


sinon change de séparateur pour en prendre un qui n'existe pas dans $1

Winks
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 6 Juil 2009

Re: RewriteRule & répertoire

Message le Ven Juil 17, 2009 16:09

Code: Tout sélectionner
RewriteRule ^([^-]*-[^-]*)-(.*)\.html$ /dir/$1/$2/index.php [QSA,L]


c'est bon, ça fonctionne comme je voulais.

Merci Beaucoup Forty


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités