Aller au contenu

Réécriture d'url et modification du chemin d'accès


australien

Sujets conseillés

Bonsoir à tous,

Aprés differentes recherches retsées vaines, je me de vous poser ma question.

J'interviens sur un site web d'annonces

Acutellement, j'ai déjà mis une regle de réécriture pour transformer mes adresses

par exemple : annonce.php?id=xx en annonce-xx.html

jusqu'à là pas de probleme

admettons que ce fichier annonce.php se trouve dans un dossier

par exemple : http://www.monsite.com/module/annonce/

j'aimerai savoir si il est possible, pas une regle de réécriture, de transformer l'adresse

http://www.monsite.com/annonce-xx.html

en

http://www.monsite.com/module/annonce/annonce.php?id=xx

J'espère que quelqu'un pourra m'aiguiller sur la regle que je dois ajouter dnas mon htacces pour se faire.

si la question a déjà été poser, n'hésitez pas à m'orienter vers le sujet que je n'aurai su trouver.

en vous remerciant d'avance pour votre lecture et votre attention

cordialement

PS Ce code ne crée pas d'erreur mais renvoie vers une page blanche..

RewriteRule ^annonce-([a-z0-9]+).html$ /module/annonce/annonce.php?id=$1 [L]

Lien vers le commentaire
Partager sur d’autres sites

RewriteRule ^annonce-([a-z0-9]+).html$ /module/annonce/annonce.php?id=$1 [L]

<{POST_SNAPBACK}>

ta règle me semble correcte, as tu essayé avec

RewriteRule ^annonce-(.*).html$ /module/annonce/annonce.php?id=$1 [L]

ton .htacess se trouve bien à la racine de http://www.monsite.com ?

en appelant

http://www.monsite.com/module/annonce/annonce.php?id=xx

ça fonctionne ?

Lien vers le commentaire
Partager sur d’autres sites

Meci yvan02 pour ta réponse,

tout d'abord, l'url rewirting que j'ai mis en place fonctionne,

mon htacces est bien à la racine de mon site

et en appelant

http://www.monsite.com/module/annonce/annonce.php?id=xx

la regle de réécriture fonctionne bien

Autrement, j'avais déjà essayé avec (.*) à la place de ([a-z0-9]+)

mais vu que c'est un nombre qui est appelé j'avais déjà preferé un (.*) à la place de ([a-z0-9]+) qui fonctionnait d'ailleurs aussi

Bref, nous souhaitons trouver une regle qui fonctionne et qui nous permette de faire disparaitre module/annonce de nos url sans avoir à modifier toute la structure de notre site.

nous essayons donc de trouver une regle qui permette de transformer adresse du type

http://www.monsite.com/annonce-x.html (ou x est un nombre)

en

http://www.monsite.com/module/annonce/annonce.php?id=x

malheureusement nos essai pour l'instant ne nous donne soit à une erreur soit à une page blanche avec cette regle

RewriteRule ^annonce-([a-z0-9]+).html$ /module/annonce/annonce.php?id=$1 [L]

Merci à vous

Lien vers le commentaire
Partager sur d’autres sites

Yop,

plusieurs interrogations pour faire avancer le schmilblick

Je fais marcher mes règles sous IIS, je sais qu'il y a des différences avec apache mais bon:

c'est normal que ta règle commence par ^?

cela ne devrait-il pas être (.*) ou (?:.*) non ?

moi j'ai besoin de backslaché mes ? dans la partie résultat

En gros la règle

RewriteRule (.*)annonce-([a-z0-9]+).html$ /module/annonce/annonce.php \?id=$2 [L]

testée sur http://www.monsite.com/annonce-12.html

fonctionne correctement

Il n'y a rien d'autre dans ton htacess?

edit:

PS: au fait, c'est normal qu'il n'y ait pas de http://www.monsite.com/ dans le résultat?

et t'as regardé le log d'erreurs de ton htaccess?

Modifié par kot
Lien vers le commentaire
Partager sur d’autres sites

Merci kot d'essayer de faire avancer le schmilblick

alors,

j'avais déjà essayé ta regle et d'autres

RewriteRule (.*)annonce-([a-z0-9]+).html$ /module/annonce/annonce.php \?id=$2 [L]

et oui elle fonctionne si j'appele une adresse type

http://www.monsite.com/module/annonce/annonce-x.html où x est une nombre

mais si j'appele une adresse du type

http://www.monsite.com/annonce-x.html

j'ai le droit à une jolie page blanche et dépourvue de code

la regle semble bonne puisqu'il n'y a pas d'erreur

mais nous n'avons pas le resultat recherché

Merci en tout cas

PS : j'utilise dans mes posts www.monsite.com comme exemple. En réalité je me suis rendu compte que domaine existe

il ne s'agit pas du tout du site sur le quel nous travaillons

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

RewriteRule ^annonce-([a-z0-9]+).html$ /module/annonce/annonce.php?id=$1 [L]

Cette règle est juste, encore que s'il n'y aura que un ou des chiffres comme paramètre tu peux laisser ceci [a-z0-9]+ pour un simple [0-9]+, mais ce n'est qu'un détail.

Concernant le problème, as-tu essayé de donner le chemin sans le slash (/) de début ?

RewriteRule ^annonce-([0-9]+).html$ module/annonce/annonce.php?id=$1 [L]

En fonction de la configuration de ton serveur cela peut avoir un impact, le slash de début renvoi le site à la racine du serveur, configurée dans Apache (sauf erreur le DOCUMENT_ROOT).

Sinon je ne vois pas vraiement d'où le problème peut venir, si tu as l'occasion de regarder le log de la réécriture d'Apache après avoir lancé la requête "-http://www.monsite.com/annonce-x.html"

Cela te donnera des informations sur ce qui a été renvoyé par le serveur.

Pour activer le log de réécriture je te laisse consulter l'aide de la directive RewriteLog et RewriteLogLevel ;).

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...