URL Rewriting

Résolu
Friday_XIII -  
PMax-57 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   -
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
je suis hébergé chez Claranet
0
PMax-57 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
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
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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
Friday_XIII
 
je vais réessayer, mais il semble que j'ai tester / et ./
0
Friday_XIII
 
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 195 Date d'inscription   Statut Membre Dernière intervention   40
 
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