.htacces erreur?

Résolu
Bonjour,

j'ai un code de réécriture dans le forum de mon site, mais il ne fonctionne pas, voici le code:
RewriteEngine on   
RewriteRule ^forum-([0-9])-([a-z]+).html$ forum1.php?id=$1&forum=$2

id est un nombre entre 1 et 9.
forum est une chaine de caractères dans laquelle il y a de tout (à part des espaces).
exemple: forum1.php?id=3&forum=comment-faire? devrait devenir forum-3-comment-faire?.html

Merci d'avence

2 réponses

Résumé de la discussion

Plusieurs échanges portent sur une réécriture d'URL Apache visant à transformer une URL du type sujet-3-comment-faire.html en appel interne script.php?id=3&topic=comment-faire. Des variantes de motifs et de drapeaux ont été proposées, notamment des groupes de capture pour le numéro et le nom de l’élément, ainsi que des considérations sur les caractères autorisés. La meilleure réponse conseille d'adapter la règle à un format plus riche, par exemple en utilisant un motif ^sujet-([0-9])-(.*)-(.*)-(.*).php$ et en redirigeant vers script.php avec plusieurs paramètres, tout en conservant les indicateurs NC, NE, QSA et L. En cas de structure différente des URLs, il faut aussi préciser l’usage du slash initial, point sur lequel la solution retenue insiste.

Bobot (l’IA à votre service)
  1. bonjour essai en ajoutant ces drapeaux : [NC,NE,QSA,L]
    1. je les places où?
    2. Comme ça :
      RewriteRule ^forum-([0-9])-([a-z]+).html$ forum1.php?id=$1&forum=$2 [NC,NE,QSA,L]

      Par contre, tu est au courant que ce n'est pas une redirection ? c'est à dire qu'il faut acceder à tes pages en faisant forum-3-comment-faire?.html et que le htaccess traduira ensuite au serveur pour savoir où chercher la page.
    3. oui je sais, c'est juste une réécriture,
      mais ça ne fonctionne toujours pas...
    4. je viens de comprendre... désolé je n'avais pas fait attention au "?" dans l'url

      le ? indique le départ de la chaine query. donc là c'est comme si tu demandais le dossier
      forum-3-comment-faire
      et un get .html c'est un peut bizarre le . dans le nom de variable donc je ne sais pas ce que ca donne au final mais ça ne peut pas fonctionner
      les caractère d'une url doivent vraiment être limité a
      a-z 0-9 _-./ il ne faut vraiment pas mettre d'autres caractères même pas un petit accent parce que ça finira par avoir ses limites....
    5. ok, mais même l'url forum intitulé "Aide" ne se modifie pas...
  2. j'en ai cependant une réécripture qui ne as pas:
    RewriteRule ^sujet-forum-([0-9])-([0-9]{1-6})-(.*)-(.*).php$ /comms.php?id=$1&id_billet=$2&forum=$3&billet=$4 [NC,NE,QSA,L]
    lorsque la reddirection arrive sur la page, elle ne fait rien.
    1. le / devant comms est de trop
    2. résolu: il fallait juste modifier pour que ça soit comme ça:
      RewriteRule ^sujet-forum-([0-9])-(.*)-(.*)-(.*).php$ /comms.php?id=$1&id_billet=$2&forum=$3&billet=$4 [NC,NE,QSA,L] 

      mais laisser le /