Reécriture pour simuler un répertoire

jiojioforever
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 23 Nov 2006

Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 14:47

Bonjour,
je suis débutant en urlrewritting.
j'utilise cette méthode pour mes sites (enfin des choses pas trop pousser) mais la je bloque sur ce cas.

J'ai dans ma bdd 5 6 catégorie différentes que je voudrais assimiler à des dossiers

exemple :

www.monsite.com/categorie1
www.monsite.com/categorie2
www.monsite.com/categorie3
www.monsite.com/categorie4
...

j'avais tenté ce code pour ce cas mais il ne semble pas fonctionner :

RewriteEngine on
RewriteRule ^(.+)$ album-photos.php?nom_cat=$1 [L,QSA]

____________________

Etape suivante, quand je suis sur la page en question, je propose différents albums concernant cette catégorie.
Je voudrais prendre le nom des albums pour faire les urls suivantes :

www.monsite.com/categorie1/nomalbum1.htm
www.monsite.com/categorie1/nomalbum2.htm
www.monsite.com/categorie1/nomalbum3.htm
....

J'avais tenté ce code mais rien...
RewriteEngine on
RewriteRule ^(.+)-(.+)+)\.htm$ selection-album.php?nom_alb=$2 [L,QSA]

Une autre petite question, est ce que j'ai besoin de passer le num_cat et num_alb dans l'url pour récupérer les infos via ma requête ?

Merci d'avance


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 15:08

La première règle semble bonne.

La seconde ne devrait pas plutot être :
Code: Tout sélectionner
RewriteRule ^(.+)/(.+)\.htm$ selection-album.php?nom_alb=$2 [L,QSA]

jiojioforever
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 23 Nov 2006

Re: Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 15:18

Le premier ne passe pas non plus...

enfin l'adresse exacte est : www.monsite.com/dossier/categorie1

il y a quelque chose à modifier sur la règle ?
avec celle ci ma page www.monsite.com/dossier m'envoie une erreur 404

jiojioforever
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 23 Nov 2006

Re: Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 15:21

Pour la deuxième je pars plus sur un truc du genre :

RewriteRule ^(.+)/(.+)-([0-9]+)\.php$ affichage-album.php?nom_cat=$1&nom_alb=$2&num_alb=$3 [L,QSA]

mais marche pas non plus ^^

jiojioforever
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 23 Nov 2006

Re: Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 15:41

Pour le premier

www.monsite.com/dossier/categorie

j'ai essayé

RewriteEngine on
RewriteRule ^dossier/(.+)$ album-photos.php?lib_cat=$1 [L,QSA]

mais rien non plus :(


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Reécriture pour simuler un répertoire

Message le Dim Jan 10, 2010 22:25

pour le virtuel tu dois mettre dans ton <head> :

<link rel="canonical" href="http://www.tonsite.com/">

la réécriture:

-www.monsite.com/categorie1/nomalbum1.htm

Code: Tout sélectionner
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/nomalbum([0-9]+)\.htm$  album-photos.php?id=$2 [L]

thomasg
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 9
Inscription: 11 Jan 2010

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 0:17

Bonsoir à tous,

Après avoir longuement cherché sur le net, je trouve enfin ce post qui correspond à peu près à ce que je cherche à faire.

J'aimerai en fait, simuler une arborescence dans la gestion de mon URLRewrinting. La prise en compte de l'arborescence fonctionne, mais lorsque j'accède à une page qui simule un niveau de dossier, les fichiers en include ne sont plus pris en compte (puisqu'il ne se trouve évidement pas dans le faux sous-repertoire), les liens relatifs comportent deux fois le dossier en question, ... .

Comment faire pour que la fausse arbo ne soit pas prise en compte par les scripts & co ? Est-ce que quelqu'un à déjà rencontré ce cas de figure ?

Voici mon URLRwritring actuel :

Code: Tout sélectionner
# Interdit le listage d'un répertoire
IndexIgnore *

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

#Règles de réécriture
RewriteRule ^accueil.html$   ?p=5 [L]
RewriteRule ^contact.html$   ?p=8 [L]
RewriteRule ^produits.html$   ?p=11 [L]
RewriteRule ^produits/page1.html$   ?sp=4 [L]
RewriteRule ^produits/page2.html$   ?sp=5 [L]
RewriteRule ^produits/page3.html$   ?sp=6 [L]


Merci à tous,
Thomas.

EDIT :
Après avoir chercher davantage, j'ai lu quelquepart que sur un mutualisé OVH, il fallait forcément préciser les URL destinations en absolue, mon .htaccess est donc maintenant :

Code: Tout sélectionner
# Interdit le listage d'un répertoire
IndexIgnore *

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

#Règles de réécriture
RewriteRule ^accueil\.html$   http://www.monsite.fr/pilote/index.php?p=5 [L]
RewriteRule ^contact\.html$   http://www.monsite.fr/pilote/index.php?p=8 [L]
RewriteRule ^produits\.html$   http://www.monsite.fr/pilote/index.php?p=11 [L]
RewriteRule ^produits/page1\.html$   http://www.monsite.fr/pilote/index.php?sp=4 [L]
RewriteRule ^produits/page2\.html$   http://www.monsite.fr/pilote/index.php?sp=5 [L]
RewriteRule ^produits/page3\.html$   http://www.monsite.fr/pilote/index.php?sp=6 [L]


Les liens sont rétablis, mais soucis : l'url affichée dans le navigateur correspond à celle censée être masquée, c'est à dire :
http://www.monsite.fr/pilote/index.php?p=5

Une idée ?

Merci :o
Dernière édition par thomasg le Lun Jan 11, 2010 2:18, édité 4 fois.

thomasg
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 9
Inscription: 11 Jan 2010

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 0:42

KOogar a écrit:pour le virtuel tu dois mettre dans ton <head> :

<link rel="canonical" href="http://www.tonsite.com/">

la réécriture:

-www.monsite.com/categorie1/nomalbum1.htm

Code: Tout sélectionner
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/nomalbum([0-9]+)\.htm$  album-photos.php?id=$2 [L]


KOogar, peux-tu expliquer ton code en détail, stp ?

Merci :D


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 15:59

:D
Partir du principe que les regles ne changent pas de l'ordinaire, il faut écrire ses regles sans changer ses habitudes. Seul 2 points sont a voir pour que la simulation fonctionne normalement. Le premier est d'ajouter une condition supplémentaire dans le fichier .htaccess et la seconde est d'ajouter un tag supplémentaire dans le <head> des documents html, voyons le détail:

1° Pour qu'une règle de réécriture soit appliquée si la requête ne correspond pas a un répertoire existant (ce qui est notre cas) il faut ajouter avant la règle de réécriture la condition suivante :
RewriteCond %{REQUEST_FILENAME} !-d

2° Il faut aussi ajouter dans le <head> la ligne suivante en mettant l'url du site
<link rel="canonical" href="http://www.tonsite.com/">

en mettant la racine en url canonicale, le slash "/" devient la racine. il faut maintenant appeler les fichiers sans oublier d'ajouter le "/" slash : <img scr="/images/images.jpg">

thomasg
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 9
Inscription: 11 Jan 2010

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 16:55

KOogar a écrit::D
Partir du principe que les regles ne changent pas de l'ordinaire, il faut écrire ses regles sans changer ses habitudes. Seul 2 points sont a voir pour que la simulation fonctionne normalement. Le premier est d'ajouter une condition supplémentaire dans le fichier .htaccess et la seconde est d'ajouter un tag supplémentaire dans le <head> des documents html, voyons le détail:

1° Pour qu'une règle de réécriture soit appliquée si la requête ne correspond pas a un répertoire existant (ce qui est notre cas) il faut ajouter avant la règle de réécriture la condition suivante :
RewriteCond %{REQUEST_FILENAME} !-d

2° Il faut aussi ajouter dans le <head> la ligne suivante en mettant l'url du site
<link rel="canonical" href="http://www.tonsite.com/">

en mettant la racine en url canonicale, le slash "/" devient la racine. il faut maintenant appeler les fichiers sans oublier d'ajouter le "/" slash : <img scr="/images/images.jpg">


En appliquant cette méthode, j'obtiens un comportement vraiment bizarre.

J'ai ajouté les conditions pour le rewrite, ajouter la link canonical (incluant un sous-dossier, dans mon cas : "http://www.monsites.fr/dossier/").

Si je mets un / devant mes URLs relative, il m'affiche le contenu d'une arborescence en dessous. Si je ne mets pas le / il m'affiche le bon contenu mais sans les liens vers les CCS et les fichiers en include/require sont introuvable. Il prend toujours le faux dossier comme un vrai dossier.

Une idée ? :(

Merci.
Thomas.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 17:04

dans ce cas il faut que le dossier existe physiquement
<link rel="canonical" href="http://www.tonsite.com/dossier/">

si il s'agit d'un dossier virtuel il ne faut rien mettre
<link rel="canonical" href="http://www.tonsite.com/">

et pour le style
<link href="/style.css" rel="stylesheet" type="text/css" />

thomasg
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 9
Inscription: 11 Jan 2010

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 17:18

KOogar a écrit:dans ce cas il faut que le dossier existe physiquement
<link rel="canonical" href="http://www.tonsite.com/dossier/">

si il s'agit d'un dossier virtuel il ne faut rien mettre
<link rel="canonical" href="http://www.tonsite.com/">

et pour le style
<link href="/style.css" rel="stylesheet" type="text/css" />


Le dossier précisé dans le canonical existe vraiment, c'est dans celui-ci qu'est mon site, en fait.

si je mets un / devant les styles,
<link href="/css/style.css" rel="stylesheet" type="text/css" />
il tente (et n'y parvient pas) de trouver ma css à cette adresse :
http://www.monsite.fr/css/style.css

Or, ma css est à cette adresse :
http://www.monsite.fr/dossier/css/style.css

Il ne prend pas en compte le dossier que je lui donne dans le canonical :
<link rel="canonical" href="http://www.monsite.fr/dossier/">


En tout cas, merci pour ton aide. J'aime beaucoup ta façon de préciser le code à chaque variante... :D

jiojioforever
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 23 Nov 2006

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 18:11

Je ne sais pas si vous connaissez le site le site : http://www.generateit.net/mod-rewrite/
il permet de générer les urlrewritting

il me propose de mettre mon url dynamique : http://www.domaine.com/photo-vacance/selection-categorie.php?nom_cat=ahaha
et après plusieurs configs je mets comme je le souhaitais http://www.domaine.com/photo-vacance/ahaha

Le dossier "photo-vacance" existe bien...

voici ce qu'il me propose... maissss ça ne marche pas :

RewriteEngine On
RewriteRule ^photo-vacance/([^/]*)$ /photo-vacance/selection-categorie.php?nom_cat=$1 [L]

j'ai un ami qui me proposer de partir sur ça : RewriteRule ^/(.+)/(.+)[/]?$ selection-categorie.php?nom_cat=$2 [L,QSA]

thomasg
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 9
Inscription: 11 Jan 2010

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 18:46

jiojioforever a écrit:Je ne sais pas si vous connaissez le site le site : http://www.generateit.net/mod-rewrite/
il permet de générer les urlrewritting

il me propose de mettre mon url dynamique : http://www.domaine.com/photo-vacance/selection-categorie.php?nom_cat=ahaha
et après plusieurs configs je mets comme je le souhaitais http://www.domaine.com/photo-vacance/ahaha

Le dossier "photo-vacance" existe bien...

voici ce qu'il me propose... maissss ça ne marche pas :

RewriteEngine On
RewriteRule ^photo-vacance/([^/]*)$ /photo-vacance/selection-categorie.php?nom_cat=$1 [L]

j'ai un ami qui me proposer de partir sur ça : RewriteRule ^/(.+)/(.+)[/]?$ selection-categorie.php?nom_cat=$2 [L,QSA]


Je pense que c'est le même soucis que le miens, un soucis de répertoire virtuel, ici le 1er photo-vacance dans ce que te propose le site.

Essai de mettre la fameuse condition citée plus haut pour voir si ça marche. Bonne chance ;)


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Reécriture pour simuler un répertoire

Message le Lun Jan 11, 2010 19:27

thomasg a écrit:Il ne prend pas en compte le dossier que je lui donne dans le canonical :
<link rel="canonical" href="http://www.monsite.fr/dossier/">


tu dois te planter quelque part, je n'avais jamais utiliser de rep physique pour du virtuel, j'ai fait un test et come attendue voici le résultat:

"test" est un répertoire physique
"rep1" "rep2" "rep3" sont des virtuels

la regle
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)/(.+)/contact\.html$ /test/contact.php [L]

le header
<link rel="canonical" href="http://www.site.com/test/">
<link href="/style.css" rel="stylesheet" type="text/css" />

LE TEST :
-http://www.annevalerie.com/test/rep1/rep2/rep3/contact.html

Reécriture pour simuler un répertoire

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

Lectures recommandées sur ce thème :



Qui est en ligne

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