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.