[URL Rewriting] - url 404 et trait d'union

Nouveau WRInaute
Bonjour,

Je debute dans le domaine de la réécriture d'URL, et comme tout débutant qui se respecte, j'ai une toute petite question.

Je veux faire de l'URL Rewriting basique

j'ai par exemple une page:
http://www.example.com/mapage.php?section=12
que je voudrais transformer en :
http://www.example.com/mot-compose/mapage.html

Je me heurte dans ce cas a un petit probleme.

En effet la page est bien redirigé de façon transparente si j'ecris:
Code:
RewriteEngine on
RewriteRule ^mot/mapage\.html$ /mapage.php?section=12 [L]

En revanche si j'ecrit la chose suivant, j'obtient une belle erreur 404:
Code:
RewriteEngine on
RewriteRule ^mot-compose/mapage\.html$ /mapage.php?section=12 [L]

De meme si j'ecrit quelque chose du genre (bien sur en imaginant que ma-page.php existe):
Code:
RewriteEngine on
RewriteRule ^mot/mapage\.html$ /ma-page.php?section=12 [L]


J'en ai conclu apres divers test que cela provenait de l'utilisation des "-" pour les mots composés.

Quelqu'un a t il une idée du pourquoi de cette erreur?

Comment la contourner tout en sachant que c'est vital que je puisse utiliser les tirets dans mes URLs?

Merci d'avance pour votre aide.
 
WRInaute passionné
Si tu n'as pas besoin de récupérer ce qui se trouve avant mapage, tu peux faire ca :
Code:
RewriteEngine on
RewriteRule /mapage\.html$ /ma-page.php?section=12 [L]

tout ce qui se termine par /mapage.html est réécrit en ma-page.php?section=12
 
Nouveau WRInaute
Bonsoir,

Je te remercie pour ta réponse, mais malheureusement, cela ne fonctionne pas.

En effet, la réécriture ne marche que si je tape:

http://www.example.com/mapage.html
si je tape n'importe quel dossier virtuel avant le nom de la page en utilisant la technique que tu m'as donné cela ne fonctionne pas et je retrouve mon amie, la page 404. :?

Une autre idée peut être?
Merci d'avance.
 
Nouveau WRInaute
et avec un regex ?

Code:
RewriteEngine on
RewriteRule ^([^/]*)/mapage\.html$ /mapage.php?section=12 [L]

Super ca marche, j'ai simplement une dernière petite question à ce sujet, comment faire si a la place d'écrire

Code:
^([^/]*)/mapage\.html$ /mapage.php?section=12 [L]

je voulais ecrire

Code:
^([^/]*)/ma-page\.html$ /mapage.php?section=12 [L]

Dans ce cas existe t il un regex me permettant d'utiliser les tiret?
Merci.
 
Discussions similaires
Haut