Page 1 sur 1

Problème avec l'URL Rewriting

Posté : 12 avr. 2008, 13:29
par djtec
Bonjour,

Voilà mon problème est le suivant.

Je souhaite créer des adresse du type:
- http://www.monsite.com/fr/articles/categorie-3.html
- http://www.monsite.com/fr/galerie/categorie-3.html

Mon .htaccess est comme suit:

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^articles/categorie-([0-9]+)\.html$ /fr/articles-cat.php?id=$1 [L] RewriteRule ^galerie/categorie-([0-9]+)\.html$ /fr/galerie-cat.php?id=$1 [L]
Le problème est que la page "http://www.monsite.com/fr/gallerie/categorie-3.html" ne fonctionne pas et que l'autre fonctionne si j'inverse les 2 ligne le script ne fonctionne toujours pas.

J'ai même essayé ceci:

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^articles/categorie-([0-9]+)\.html$ /fr/articles-cat.php?id=$1 [NC,L] RewriteRule ^galerie/categorie-([0-9]+)\.html$ /fr/galerie-cat.php?id=$1 [NC,L]
Et toujours pareil.

Par contre si je tape:
http://www.monsite.com/fr/galerie-cat.php?id=2
Cela fonctionne parfaitement.

Donc cela veut bien dire que mon soucis viens bien du .htaccess.

Alors quoi faire???

Merci d'avance.

Posté : 12 avr. 2008, 14:12
par Hywan
Hey :),

et si tu mettais plutôt :

Code : Tout sélectionner

RewriteRule ^/fr/...
ça n'irait pas mieux ?
Où est placé ton .htaccess ?

Posté : 12 avr. 2008, 14:34
par djtec
Mon .htaccess est placé dans le répertoire fr/

Donc tu me dit que je dois faire ceci:

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^/fr/articles/categorie-([0-9]+)\.html$ /fr/articles-cat.php?id=$1 [L] RewriteRule ^/fr/galerie/categorie-([0-9]+)\.html$ /fr/galerie-cat.php?id=$1 [L]

Posté : 12 avr. 2008, 16:13
par Victor BRITO
Essaie de placer ton .htaccess à la racine du site. Et vérifie aussi les liens, vu que tu crées des répertoires virtuels : ces liens doivent partir de la racine du site pour le cheminement, afin d'éviter tout problème de chemin.

De plus, es-tu sûr que ton hébergeur permet la réécriture d'URL ? Si ton site est hébergé chez Free, par exemple, mieux vaut abandonner la partie.

Posté : 12 avr. 2008, 17:18
par djtec
Mon hébergeur est OVH et c'est un hébergement Start 5G et il autorise la réécriture d'url.

Et si je le met à la racine cela ne change rien la page "fr/galerie/categorie-3.html" ne ce charge pas.

Idem en mettant /fr/ devant les liens dans la htaccess.


Le dossier fr/ n'est pas virtuel. Il existe car tout mes fichiers sont dedans.

Posté : 29 mai 2008, 16:55
par docdamien
Hey :),

et si tu mettais plutôt :

Code : Tout sélectionner

RewriteRule^/fr/...
ça n'irait pas mieux ?
Où est placé ton .htaccess ?
Salut,

à quoi sert le ^ :?:

Posté : 29 mai 2008, 16:59
par Victor BRITO
Le ^ est un délimiteur indiquant un début de chaîne, dans le cas d'une expression régulière ; par exemple, ^toto cherchera toute chaîne de caractères commençant par toto.

Tu as aussi le $, qui délimite une fin de chaîne.

Et si, dans ton expression régulière, tu dois chercher une ou plusieurs occurences de ^ et de $, il suffit de les échapper dans l'expression régulière, comme suit :

Code : Tout sélectionner

#Recherche d'une chaîne commençant par ^ et finissant par $ ^\^(.*)\$$

Posté : 29 mai 2008, 17:00
par docdamien
@VICTOR: Merci beaucoup :wink:

Posté : 29 mai 2008, 17:03
par steph29
si tu place le htaccess dans /fr/ le code doit etre:

Code : Tout sélectionner

RewriteRule ^articles/categorie-([0-9]+)\.html$ articles-cat.php?id=$1 [L]
si c'est a la racine du site le code doit etre:

Code : Tout sélectionner

RewriteRule ^fr/articles/categorie-([0-9]+)\.html$ fr/articles-cat.php?id=$1 [L]
si tu melange forcement ca marche pas ;)

@docdamien:
c'est un signe d'expression reguliere
le ^ veut dire : début de chaîne
et le $ : fin de chaine

en revanche si c'est entre crochet [^a] cela signifie ne contient pas "a"

Posté : 29 mai 2008, 17:04
par Hywan
Un complément : expreg.com et l'excellent lumadis.be.