Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.web : problème de mod_rewrite

Posté par ploum (page perso, ) le 01 août 2007
Bonjour,



J'aimerais faire un petit fichier .htaccess qui renvoie toutes les URLS commençant par un "?" vers un fichier donné.



J'ai donc pensé tout simplement :



RewriteRule ^\? ploum_redirect.php [L]





Mais voilà, ça ne fonctionne pas !



Et là, je sèche. Je ne vois pas comment faire autrement qu'en escapant bêtement ce foutu "?". Qqn a une idée géniale ?



Merci d'avance

> Lire le message (6 commentaires, moyenne: 2,2).  

Vous avez demandé le commentaire #855778.

Workaround

Posté par ploum (page perso, ) le 01/08/2007 à 22:46. (lien). Évalué à 2.

J'ai trouvé un workaround, sachant que dans mon cas, le "?" sera toujours suivi de plusieurs caractères, il m'a suffit d'écrire :

RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule . ploum_redirect.php [L]

  • [^]Re: Workaround

    Posté par ploum (page perso, ) le 02/08/2007 à 08:57. (lien). Évalué à 1.

    En fait c'est une mauvaise idée car ça prend toutes les URLs avec un "?", pas juste celle qui commence par ça.

    Damned

    • [^]Re: Workaround

      Posté par Honor (page perso, ) le 02/08/2007 à 09:20. (lien). Évalué à 3.

      Je ne sais pas si j'ai bien compris ton problème, mais tu veux rediriger des pages comme cela :

      http://www.example.com/?query 
      
      mais pas des urls de ce type :
      http://www.example.com/url?query 
      
      non ? Alors essaie ceci :
      RewriteCond %{QUERY_STRING} ^.+$
      RewriteRule ^/$  /ploum_redirect.php [L]
      
      La premiere ligne dit de n'appliquer la règle que si la variable QUERY_STRING est non vide. La seconde ligne n'applique la règle qu'à la racine (alors que le . est validé par tout caractère.)

      • [^]Re: Workaround

        Posté par ploum (page perso, ) le 02/08/2007 à 18:50. (lien). Évalué à 1.

        Effectivement, tu as très bien compris le problème et en plus tu m'apporte la solution !

        Un énorme merci, vraiment !


        Petite correction : c'est ^$ dans le RewriteRule chez moi.

      [^]Re: Workaround

      Posté par -=[ Benoit Plessis ]=- (page perso, ) le 02/08/2007 à 18:45. (lien). Évalué à 3.

      Quand tu appelle http://www.ploum.fr/?test=1
      tu appelle le fichier d'index du dossier racine, il te suffit de
      spécifier via la directive DirectoryIndex (iirc) que tu veut que l'index soit
      ploum_redirect.php et non un index.php/index.html/autre défaut

      pas besoin de sortir la massue pour cela

      --
      Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libre)
      • [^]Re: Workaround

        Posté par -=[ Benoit Plessis ]=- (page perso, ) le 02/08/2007 à 18:48. (lien). Évalué à 3.

        sinon si tu veut que le meme fichier soit utilisé pour tout les dossiers alors
        la oui il faut sortir mod_rewrite:


        RewriteCond %{QUERY_STRING} ^.+$
        RewriteRule /$ /ploum_redirect.php [L]

        Cela matchera toutes les url finissant par / (attention a ne pas mettre le ^ devant,
        auquel cas cela ne matchera que la racine).

        --
        Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libre)