8791 sujets

Développement web côté serveur, CMS

Bonsoir,

Je rencontre un problème d'url rewriting.

Je veux réécrire l'url http://www.monsite.com/offres-emploi-recherche?nom=paris&num=123
en http://www.monsite.com/offres-emploi-paris-123.html, mais cela produit une erreur 404 quand je clique sur la seconde url, celle réécrite) et je ne parviens pas à voir d'où peut venir l'erreur dans mes règles de réécriture.

Voici la règle dans mon fichier .htaccess :


RewriteRule ^offres-emploi-([a-z]+)-([0-9]+)\.html$  http://www.monsite.com/offres-emploi-recherche?nom=$1&num=$2  [L]


et mon .htaccess complet (dans lequel il y a bien sûr des règles de réécriture pour d'autres pages) :


Options +FollowSymLinks
#IndexIgnore */*
RewriteEngine on
RewriteCond %{HTTP_HOST} ^monsite\.com$ [NC]
RewriteRule ^(.*)  http://www.monsite.com/$1  [QSA,L,R=301]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^([a-z0-9-]+)-([0-9]+)\.html$  http://www.monsite.com/offre/$2  [L]

# URL par commune
RewriteRule ^offres-emploi-([a-z]+)-([0-9]+)\.html$  http://www.monsite.com/offres-emploi-recherche?nom=$1&num=$2  [L]

ErrorDocument 403  http://www.monsite.com/404   
ErrorDocument 404  http://www.monsite.com/404   
ErrorDocument 500  http://www.monsite.com/404  


Merci d'avance pour votre aide
Modifié par cparizot (18 Jun 2013 - 20:11)
Bonjour,
Je me trompe peut-être, mais as-tu essayé de mettre ta règle AVANT celle-ci:
RewriteRule ^([a-z0-9-]+)-([0-9]+)\.html$   http://www.monsite.com/offre/$2   [L]

Puisque cette règle est la première rencontrée et qu'elle matche également avec ton url passée, il la prend en compte (et donc ne prendra pas en considération la règle que tu veux lui appliquer, mais qui se situe après celle-ci dans le .htaccess), et comme l'url réécrite n'existe pas, il te met une erreur 404.
Modifié par GroquikMLV (22 Jun 2013 - 02:23)