2010-11-27 6 views
0

Disons que j'ai un fichier nommé FILE%20NAME[1].png sur mon serveur.Comment empêcher RewriteRule d'entrer dans une boucle sans fin?

Le navigateur demande FILE%20NAME%5B1%5D.png, échappant aux crochets, qu'Apache interprète comme FILE NAME[1].png et bien sûr ne peut pas trouver.

Je sais que je devrais simplement renommer le fichier, mais comment est-ce que j'écrirais une règle de redirection pour une solution rapide dans .htaccess? J'ai essayé

RewriteRule ^folder/FILE\sNAME\[1\].png /folder/FILE\%20NAME\[1\].png [R=301,QSA,L,NE] 

qui se traduit par une boucle sans fin parce que le nom de fichier réécrite correspond toujours la règle.

Répondre

1

Vous devez échapper à la % (pour cent) signe - parce que sinon %20 est interprété comme (espace).

% échappe à %25, en remplaçant %20 pour %2520 devrait faire l'affaire.

Voir aussi: Percent-encoding.

1
RewriteRule ^folder/FILE\sNAME\[1\].png /folder/FILE\%2520NAME\[1\].png [R=301,QSA,L,NE] 
0
  1. Vous vous êtes trompé sur le problème pour commencer - le problème n'est pas que les crochets sont échappés. La requête appropriée à envoyer pour obtenir un fichier nommé "FILE% 20NAME [1] .png" sur le système de fichiers serait "FILE% 2520NAME% 5B1% 5D.png" dans l'URL.

  2. Si vous venez d'utiliser un Alias ou un non-redirectif RewriteRule alors il n'y aurait pas de problème avec les boucles. Je suis assez certain que si vous prenez soin de ce que j'ai dit dans le problème 1, il n'y aura pas non plus de problème avec les boucles, parce que lorsque vous renvoyez la cible de redirection appropriée, alors la nouvelle URL de demande contiendra %2520 (décodé: %20), qui ne correspondra pas à \s, la règle ne s'appliquera donc pas.

+0

1. Peut-être, mais le point est le navigateur envoie la demande, donc je n'ai aucun contrôle sur elle (Firefox de toute façon) – bluegray

+0

@bluegray bien sûr, il le fait, mais vous avez tort * ce * c'est envoyer et pourquoi. – hobbs

+0

Peut-être que je ne comprends pas bien, mais le html src généré est 'FILE% 20NAME [1] .png' que le navigateur échappe à' FILE% 20NAME% 5B1% 5D.png' laissant le '% 20' tel quel et s'échappant les '[]' 's. – bluegray

Questions connexes