Distinguer répertoires virtuels et réels

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

ALkyD
Nouveau WRInaute
 
Messages: 6
Inscription: Dim Nov 06, 2005 17:31

Distinguer répertoires virtuels et réels

Message le Dim Déc 17, 2006 14:18

Bonjour,

Je me suis créé un système de répertoires virtuels dans mon .htaccess avec le RewriteRule suivant :
http://www.toto.com/truc/ vers rubrique.php?rep=truc

Enfin bref, tout marche jusqu'ici. Le problème, c'est à propos des répertoires réels. Si je fais http://www.toto.com/fichiers/ (ou 'fichiers/' est un répertoire réel), Apache le prend comme un répertoire virtuel et du coup, j'atterris sur la page rubrique.php?rep=fichiers.

Comment faire en sorte qu'Apache puisse distinguer les répertoires virtuels des répertoires réels, donc ne rediriger que ceux qui sont fictifs vers rubrique.php?rep=xxx et accéder normalement à ceux qui sont réels, sans toucher à l'URL rewriting ?

Merci par avance.


Fab le Fou
WRInaute accro
WRInaute accro
 
Messages: 1511
Inscription: Jeu Déc 02, 2004 15:20

Re: Distinguer répertoires virtuels et réels

Message le Dim Déc 17, 2006 14:33

ALkyD a écrit:Comment faire en sorte qu'Apache puisse distinguer les répertoires virtuels des répertoires réels, donc ne rediriger que ceux qui sont fictifs vers rubrique.php?rep=xxx et accéder normalement à ceux qui sont réels, sans toucher à l'URL rewriting ?Merci par avance.


Il te faut utiliser un modèle commun pour tes répertoires virtuels de manières à les distinguer des autres, par exemple : -http://www.example.com/r-truc/ , -http://www.example.com/r-truc2/, etc

ALkyD
Nouveau WRInaute
 
Messages: 6
Inscription: Dim Nov 06, 2005 17:31

Message le Dim Déc 17, 2006 14:48

Et ensuite ? Comment Apache fait la différence en suivant ton idée ? N'y a-t-il pas un RewriteCond à placer avant ?


hebmaster
WRInaute accro
WRInaute accro
 
Messages: 1053
Inscription: Jeu Déc 22, 2005 12:35

Message le Dim Déc 17, 2006 15:14

ALkyD a écrit:Et ensuite ? Comment Apache fait la différence en suivant ton idée ? N'y a-t-il pas un RewriteCond à placer avant ?


il n'y a rien a ajouter a part le r- dans ton htaccess...

donne moi ton code et je te montrerai comment faire

ALkyD
Nouveau WRInaute
 
Messages: 6
Inscription: Dim Nov 06, 2005 17:31

Message le Dim Déc 17, 2006 15:30

Le voilà :

Code: Tout sélectionner
RewriteRule ^([a-zA-Z0-9_]+)/$ rubrique.php?r_rewrite=$1 [L,QSA]


Ce n'est donc pas possible qu'Apache fasse la différence entre répertoire réel et virtuel sans suivre une charte de nommage pour les noms des dossiers (comme r_ au début des dossiers virtuels) ? C'est quand même sacrément ennuyeux, car si c'est réellement le cas, ça m'oblige à renommer tous mes répertoires virtuels (une quarantaine)... :(


Fab le Fou
WRInaute accro
WRInaute accro
 
Messages: 1511
Inscription: Jeu Déc 02, 2004 15:20

Message le Dim Déc 17, 2006 16:15

Une autre astuce que tu peux utiliser c'est que pour tes répertoires réels tu remplaces les liens pointant vers la racine par des liens pointant vers index.php.

Là du coup, ta règle de réécriture ne s'appliquera pas.


Serious
WRInaute accro
WRInaute accro
 
Messages: 2438
Inscription: Lun Nov 21, 2005 18:29

Message le Dim Déc 17, 2006 17:13

ALkyD a écrit:Ce n'est donc pas possible qu'Apache fasse la différence entre répertoire réel et virtuel sans suivre une charte de nommage pour les noms des dossiers?

Si. Il y a un test pour ca, je ne me souviens plus lequel mais il existe. Regarde la doc de RewriteCond.


jeanluc
WRInaute accro
WRInaute accro
 
Messages: 2651
Inscription: Lun Mai 03, 2004 14:48

Message le Dim Déc 17, 2006 17:49

Je n'ai pas testé, mais il me semble que tu devrais pouvoir résoudre le problème avec quelque chose comme ceci:
Code: Tout sélectionner
RewriteRule ^repertoire_reel1\/  -  [L]
RewriteRule ^repertoire_reel2\/  -  [L]
RewriteRule ^repertoire_reel3\/  -  [L]
RewriteRule ^([a-zA-Z0-9_]+)/$ rubrique.php?r_rewrite=$1 [L,QSA]

Jean-Luc

ALkyD
Nouveau WRInaute
 
Messages: 6
Inscription: Dim Nov 06, 2005 17:31

Message le Jeu Déc 21, 2006 0:05

jeanluc a écrit:Je n'ai pas testé, mais il me semble que tu devrais pouvoir résoudre le problème avec quelque chose comme ceci:
Code: Tout sélectionner
RewriteRule ^repertoire_reel1\/  -  [L]
RewriteRule ^repertoire_reel2\/  -  [L]
RewriteRule ^repertoire_reel3\/  -  [L]
RewriteRule ^([a-zA-Z0-9_]+)/$ rubrique.php?r_rewrite=$1 [L,QSA]

Jean-Luc

Ca marche pour des répertoires prédéfinis. Mais si j'ai 50 répertoires réels, ca m'oblige à écrire 50 règles...
Je vais regarder la doc de RewriteCond...

epsimaster
Nouveau WRInaute
 
Messages: 3
Inscription: Dim Déc 31, 2006 16:47

Message le Mar Jan 02, 2007 10:06

Bonjour, et bonne année,

Si je me suis inscrit à ce forum c'est avant tout pour répondre à ta question.
Personnellement j'utilise les lignes suivantes :
Code: Tout sélectionner
# Si le fichier existe, ne pas faire la redirection
RewriteCond %{REQUEST_FILENAME} !-f

# Si le répertoire existe, ne pas faire la redirection
RewriteCond %{REQUEST_FILENAME} !-d


Le .htaccess vérifiera donc la présence "physique" des répertoires et fichiers demandés en lien ou dans la barre d'adresse. S'il existe, pas de redirection.

J'espère t'avoir aidé.

P.S. : Un [Résolu] et c'est réglé.


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