Bonjour,
Je rencontre un problème avec les règles de réécriture d'URL sur mon hébergement mutualisé (hébergement starter).
J'ai ajouté la règle suivante dans mon fichier .htaccess :
RewriteRule ^article-sante-([^/]+)$ article-sante.php?sujet=$1 [L]
Cette règle fonctionne bien. Elle m'affiche bien "/article-sante.php?sujet=test" quand je tape dans la barre d'adresse "/article-sante-test".
Mais la règle ci dessous ne fonctionne pas (seul le tiret est remplacé par un slash):
RewriteRule ^article-sante/([^/]+)$ article-sante.php?sujet=$1 [L]
Elle m'affiche juste "/article-sante.php" quand je met "/article-sante/test" , elle ne prend pas en compte le paramètre sujet (la variable $_GET est vide).
Pouvez-vous m'aider à comprendre pourquoi et comment résoudre ce problème ?
Merci d'avance pour votre aide.
Bonjour,
Dans la regexp [^/]+ je me demande si le ^ est réellement interprété comme un début de chaîne .
Quand tu dis: "Elle m'affiche juste "/article-sante.php" quand je met "/article-sante/test" " il n'affiche pas non plus "?sujet=" ??? dans ce cas il n'y a pas de match sur ce rewrite.
Alors ce n'est pas mon domaine, mais pour mois le ^ dans un [ ] veut dire: tout caractère sauf ceux qui suivent.
donc ici n'importe quel caractère sauf le slash.
le début de chaine c'est le circonflexe du début
En fait ma page php vérifie s'il y a un paramètre de requête en récupérant $_GET['sujet'] . Si $_GET['sujet'] n'existe pas j'affiche la liste de tous les articles (c'est la page article-sante.php sans paramètre)
Donc en fait quand je demande /article-sante/test, a priori l'url rewritting fonctionne si je comprend bien, car j'arrive sur la page article-sante.php et pas sur un dossier article-sante (qui n'existe pas sur mon serveur). C'est juste que la superglobale $_GET est vide.
Bon, ce n'est pas mon quotidien non plus, je passe la main...
Bon, j'ai demandé de l'aide à l'IA, qui m'a fait tester plusieurs choses avant de trouver que le problème vient de MultiViews qui était activé.
J'ai ajouté
et là tout fonctionne.
moi j'ai un site avec des réécritures pareil dans le htaccess, et avec multiviews activé et j'ai pas de problème.