Problème avec l'URL Rewriting

Eléphant du PHP | 451 Messages

12 avr. 2008, 13:29

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.

ViPHP
ViPHP | 4674 Messages

12 avr. 2008, 14:12

Hey :),

et si tu mettais plutôt :

Code : Tout sélectionner

RewriteRule ^/fr/...
ça n'irait pas mieux ?
Où est placé ton .htaccess ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 451 Messages

12 avr. 2008, 14:34

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]

Mammouth du PHP | 2937 Messages

12 avr. 2008, 16:13

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.

Eléphant du PHP | 451 Messages

12 avr. 2008, 17:18

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.

Eléphant du PHP | 51 Messages

29 mai 2008, 16:55

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 ^ :?:
La bave du crapaud n'atteinds pas la blanche colombe.
Site principal: CiaoNetwork
http://blog.ciaonetwork.com

Mammouth du PHP | 2937 Messages

29 mai 2008, 16:59

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 $ ^\^(.*)\$$
Modifié en dernier par Victor BRITO le 29 mai 2008, 17:01, modifié 1 fois.

Eléphant du PHP | 51 Messages

29 mai 2008, 17:00

@VICTOR: Merci beaucoup :wink:
La bave du crapaud n'atteinds pas la blanche colombe.
Site principal: CiaoNetwork
http://blog.ciaonetwork.com

Eléphant du PHP | 175 Messages

29 mai 2008, 17:03

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"

ViPHP
ViPHP | 4674 Messages

29 mai 2008, 17:04

Un complément : expreg.com et l'excellent lumadis.be.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).