URL Rewriting

Résolu/Fermé
Friday_XIII - 28 juil. 2009 à 09:20
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 - 28 juil. 2009 à 11:41
Bonjour,
je suis actuellement en train de travailler sur un glossaire.
Je souhaiterais que lorsque l'utilisateur clique sur un mot, il soit redirigé sur la page mot.html (exemple lorsqu'il clique sur Accident, il soit redirigé sur Accident.html).
Or pour éviter d'avoir à écrire plus de 150 fichiers, je souhaiterais mettre en place l'url rewriting.
Ainsi lorsque l'utilisateur clique sur le mot Accident, il soit redirigé vers la page glossaire.php?word=Accident,
mais que dans la barre d'adresse, on ait Accident.html. Le lien pointe sur Accident.html.

J'ai donc créé un .htaccess dans le répertoire où se trouve UNIQUEMENT les fichiers utiles au glossaire (code et css). Voici ce que j'ai écris :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([azertyuiopmlkjhgfdsqwxcvbn0123456789._()-]+)_([0123456789]+)\.html$ glossaire.php?word=$1&id=$2 [L,NC]

Cela ne fonctionne qu'à moitié. En effet, je suis bien redirigé vers la page Accident(toujours cet exemple), mais dans la barre d'adresse, j'ai glossaire.php?word=Accident&id=1 ...

En local avec EasyPhp3, cela fonctionne comme je souhaite (je garde Accident.php), mais quand je passe sur le serveur (Apache), c'est là que ça fonctionne comme expliqué plus haut.

Savez vous ce que je peux faire pour obtenir ce que je souhaite ?

Merci d'avance

17 réponses

PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 09:32
Salut,

On va commencer par un petit test très idiot mais c'est ce qui m'est arrivé, c'est pour ça que j'en parle :

Ton lien sur ton serveur Apache est-il bien redirigé vers "glossaire.php?word=Accident", n'est-il pas resté sur "glossaire.php?word=Accident&id=1".

Je dis ça car je suis resté 2heures sur le même problème, j'étais certain d'avoir le bon lien, alors qu'en fait il n'était bon que sur mon serveur local (oublié de changer le fichier sur le ftp...).
0
le lien est redirigé vers glossaire.php?word=Accident&id=1, tout simplement parce que je recupère l'id pour afficher la définition.

A chaque fois la définition s'affiche, c'est juste que dans l'url est glossaire.php?word=Accident&id=1, alors que je voudrais que ça soit : Accident_1.html
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 09:39
Je ne parle pas de ton lien dans ton fichier htaccess, mais dans ta page (est-ce que quand tu passe la souris sur ton lien, en bas a gauche de ton navigateur il y'a marqué "Accident_1.html")
0
scuse j'avais pas compris où tu venais en venir :p
oui, c'est bien Accident_1.html
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 09:44
Y'a pas de mal ;)

Hmmm déjà pour éviter quelques petits soucis :

Dans tes valeurs $1, rajoute les majuscules.

RewriteRule ^([azertyuiopmlkjhgfdsqwxcvbnAZERTYUIOPMLKJHGFDSQWXCVBN0123456789._()-]+)_([0123456789­]+)\.html$ glossaire.php?word=$1&id=$2 [L,NC] 


Ensuite, le NC je pense que tu peux le supprimer.

On va déjà essayer ça, les erreurs les plus chiantes sont très souvent les plus futiles !
0
Je ne pense pas que ça vienne de là, car si ça venais de cette syntaxe, il n'arriverait pas à trouver les pages, ce qu'il fait très bien.

J'ai tout de même testé, et ça ne change rien.

Non je pense que ça doit plus venir du serveur(en local ça foonctionne)
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 09:53
Tu as raison, le NC correspond à NoCase, c'est pour celà que c'est insensible à la casse.

De là, essaye d'inverser [L,NC] en [NC,L].

Ensuite, où es-tu hébergé ?
0
je suis hébergé chez Claranet
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 10:34
Ouais nan je trouve pas,

Après quelques recherches y'en a pas mal qui utilisent l'url rewriting chez claranet.
Apparemment tu es redirigé, c'est que ton htaccess est reconnu et que le langage PERL est supporté.

Et si tu enlevais les caractères spéciaux qu'on ne retrouve jamais dans les url en général :

._()-]+) à remplaceer par ._-]+)

Perso je n'utilise jamais de ., ça peut porter confusion avec les noms de domaine etc. pareil pour les /
0
J'ai essayé en enlevant tout ce qui n'étais pas lettre ou chiffre pour voir, et ça ne change rien ...
Mais j'aimerais bien savoir pourquoi est-ce qu'en local il garde Accident1.html, et que une fois en ligne il change en glossaire.php?word=Accident&id=1
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 10:47
Moi aussi ça me bloque là.

On va essayer autre chose, déjà pour voir si l'url rewrite marche correctement.

Je t'invite à te rendre sur : [ https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting ]

Titre : Vérifier si l'URL Rewriting est compatible avec son hébergeur
0
il est forcement compatible sinon, il me mettrait qu'il ne reconnait pas Accident_1.html,
or là il redirige bien vers glossaire.php?word=Accident&id=1
0
bon en fait ça vient du fait que dans le .htaccess j'ai mis le chemin absolu : http://www.monsite/glossaire/glossaire.php?word=$1&id=$2

alors que en local, j'ai juste mis glossaire.php?word=$1&id=$2. Si en local, je met les chemin absolu, ça fait pareil l'URL change.

Sauf que si sur le serveur je met le lien relatif ça plante ...

il me reste donc à trouver ce que je peux faire pour eviter ce plantage.

Si vous avez des idées, je suis preneur :p
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 11:24
J'essaye de te faire test quelques petits trucs :

rajoute voir un slashe devant le glossaire :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([azertyuiopmlkjhgfdsqwxcvbn0123456789._()-]+)_([0123456789­]+)\.html$ /glossaire.php?word=$1&id=$2 [L,NC]
0
je vais réessayer, mais il semble que j'ai tester / et ./
0
alors j'avais tester avec /glossaire.php?word=$1&id=$2
et ça plantais

MAIS avec /glossaire/glossaire.php?word=$1&id=$2 ça fonctionne, j'ai bien Accident.html dans l'url =)

merci beaucoup pour ton aide
0
PMax-57 Messages postés 193 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
28 juil. 2009 à 11:41
exact car l'url que tu dois indiquer est l'url d'accès au fichier.

ouf ! :)

Bonne continuation et bonne journée à toi !
0