Forum Programmation.web problème de mod_rewrite

Posté par  (site web personnel, Mastodon) .
Étiquettes : aucune
0
2
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
  • # Workaround

    Posté par  (site web personnel, Mastodon) . É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]

    Mes livres CC By-SA : https://ploum.net/livres.html

    • [^] # Re: Workaround

      Posté par  (site web personnel, Mastodon) . É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

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Workaround

        Posté par  (site web personnel) . É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  (site web personnel, Mastodon) . É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.

          Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Workaround

        Posté par  (site web personnel) . É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
        • [^] # Re: Workaround

          Posté par  (site web personnel) . É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).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.