htaccess redirection soucis avec point d'interrogation

Eléphant du PHP | 224 Messages

27 janv. 2018, 17:21

Bonjour à tous :)

Malgré plusieurs heures de recherche et de tests, je n'arrive toujours pas à résoudre ce cas de figure : je souhaite faire une simple redirection à partir d'une adresse fixe vers une autre dynamique, autrement dit, je reçois une adresse :

Code : Tout sélectionner

/folder1/folder11/file1.pdf

Et je souhaiterai avoir :

Code : Tout sélectionner

/folder1/folder11/index.php?file=file1

Alors, lorsque j'écris une directive "RedirectMatch" dans le fichier "htaccess" comme suit :

Code : Tout sélectionner

RedirectMatch permanent "/folder1/(.*)/(.*)\.pdf$" "/folder1/$1/index.php?file=$2"

J'obtiens l'url suivante :

Code : Tout sélectionner

domaine.com/folder1/folder11/index.php%3Ffile=file1

Or, vous l'avez compris, cela génère une erreur et le fichier "index.php" n'est jamais exécuté…

Alors, que faire pour que le point d'interrogation "?" dans le chemin de redirection ne soit pas converti en "%3F" ?

En consultant le site d'Apache, j'ai vu qu'il était possible de changer l'encodage par défaut des caractères, alors j'ai ajouté cette directive :

Code : Tout sélectionner

AddDefaultCharset utf-8

Mais, ça ne résout rien, j'ai toujours un "%3F" à la place d'un point d'interrogation "?"…

Bref… toute suggestion est la bienvenue :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 janv. 2018, 18:54

Bonjour,

Alors je n'ai pas la solution en utilisant RedirectMatch (qui appartient au module Apache mod_alias)
Ma préconisation serait que tu utilises à la place RewriteRule (qui appartient au module Apache mod_rewrite), et qui a prévu ce cas là, il suffit d'ajouter le flag [NE] (pour No Escape) à la fin de la règle pour que ça fonctionne comme tu le souhaites.
https://httpd.apache.org/docs/2.4/fr/rewrite/flags.html
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 224 Messages

28 janv. 2018, 22:31

Bonsoir et merci beaucoup de ta réponse… je vais essayer ta proposition et te tiens au courant… :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)