URL canoniques mais besoin d'exclure des répertoires

Oncle Tom

WRInaute impliqué
Bonjour,

je suis en train de reprendre tout mon site et j'ai basculé à l'URL rewriting en essayant de suivre au maximum la formule "l'URL veut dire quelque chose".
Mon adresse est de la forme -http://www.site.ext/dossier1/dossier2/..., un peu à la webrankinfo ;)

Or le problème c'est que j'ai 2 dossiers (forums et un autre d'administration) qui répondent à mes règles de réécritures ... le truc c'est que je ne veux pas.
J'ai un .htaccess de ce type :

Code:
Options +FollowSymlinks
RewriteEngine on

#php_value session.use_trans_sid 0
php_flag magic_quotes_gpc Off

#Translation vers les nouvelles URL
#RedirectMatch 301 ^\?cat=([a-z]+)$ /$1/

#dossier exclus du rewriting
RewriteCond %{REQUEST_URI}  !^(.*)/forums/.*

#Rewrite spécifiques
RewriteRule ^(dossiers)/([0-9a-z]+)_page([0-9]{1,2}).htm$ index.php?cat=$1&lib=$2&page=$3 [NC,L]
RewriteRule ^(tutoriaux)/([0-9a-z]+)_page([0-9]{1,2}).htm$ index.php?cat=$1&lib=$2&page=$3 [NC,L]
RewriteRule ^(infos)/(contact)/(team)_([0-9]{1,2}).htm$ index.php?cat=$1&action=$2&lib=$3&admin=$4 [NC,L]
RewriteRule ^(membre)/(connexion).htm$ index.php?cat=$1&lib=$2 [NC,L,QSA]
RewriteRule ^(message)/([0-9a-z]+)_([0-9a-z]+).htm$ index.php?cat=$1&lib=$2&msg=$3 [NC,L]

#Rewrite URL
RewriteRule ^([a-z]+)/$ index.php?cat=$1 [NC,L]
RewriteRule ^([a-z]+)/([0-9a-z]+).htm$ index.php?cat=$1&lib=$2 [NC,L]
RewriteRule ^([a-z]+)/([0-9a-z]+)/$ index.php?cat=$1&action=$2 [NC,L]
RewriteRule ^([a-z]+)/([0-9a-z]+)/([0-9a-z]+).htm$ index.php?cat=$1&action=$2&lib=$3 [NC,L]

Mon exclusion sur le répertoire "forums" ne fonctionne pas :/ peut être est-ce dû au fait que je teste en local (ça donne une url du style -http://localhost/Nom du site/forums

Si quelqu'un a une astuce je suis preneur ;)
Merci d'avance
 

XenonDelee

WRInaute impliqué
je suis pas un pro du rewriting mais si tu mets ton fichier .htaccess dans le répertoire pour lequel tu veux qu'il yait du rewriting, il ne s'appliquera pas aux autres répertoires !

c'est plus simple non :lol:
 

Oncle Tom

WRInaute impliqué
Les répertoires rewrités sont virtuels, ça se passe comme des pseudos frames.
J'ai un problème avec les répertoires réels, considérés comme virtuel d'après mon .htaccess. Je voudrais les exclure des règles et j'peux pas changer ;)
 

XenonDelee

WRInaute impliqué
The Jedi a dit:
Les répertoires rewrités sont virtuels, ça se passe comme des pseudos frames.
J'ai un problème avec les répertoires réels, considérés comme virtuel d'après mon .htaccess. Je voudrais les exclure des règles et j'peux pas changer ;)

ah ouais alors là ça me dépasse complètement :cry:

désolé ...

J'espère que tu trouveras ta réponse :lol:

ps : c'est quoi l'intérêt de créer des répertoires virtuels et des architectures aussi alambiquées ?? ( question bête je suppose :wink: )
 

XenonDelee

WRInaute impliqué
OK, je viens de regarder d'un peu plus près ton fichier .htaccess, je crois que j'ai compris ...

mais est-ce que tu n'aurais pas intérêt dans ce cas à faire des url dans ce genre

tutorial-monsujet-12.htm

comme ça tu mets tes mots clés dans ton nom de fichier et tu évites les répertoires virtuels ...

A+
 

nikoshr

WRInaute occasionnel
Un RewriteCond ne s'applique qu'à la règle suivante, donc dans ton .htaccess actuel il ne s'applique que sur
Code:
RewriteRule ^(dossiers)/([0-9a-z]+)_page([0-9]{1,2}).htm$ index.php?cat=$1&lib=$2&page=$3 [NC,L]

Le plus simple est probablement de remplacer la condition par
Code:
RewriteRule	.*/forums  - [L]
qui arrête l'UR quand /forums est rencontré dans la requête.
 

Oncle Tom

WRInaute impliqué
Arf ça s'arrête qu'au premier ... je comprends mieux ^^
Effectivement avant de lire ta réponse j'ai fait à peu près comme toi
Code:
RewriteRule ^(forums|admin)/(.*)$ $1/$2 [QSA,L]

Sauf que ton affaire est plus propre donc merci beaucoup ;) tu m'sauves la vie car j'aurais pas pu continuer sinon ^^
 

Discussions similaires

Haut