Encoded URLs : %20 fonctionne mais pas les autres ..

Encoded URLs : %20 fonctionne mais pas les autres .. - HTML/CSS - Programmation

Marsh Posté le 10-04-2008 à 17:01:26    

Je deviens un peu fou car je n'arrive pas à situer le problème.
 
J'ai un serveur web Apache sous Windows (eh oui) et une tétrachiée de documents qui ont été importés par script, et qui doivent être accessibles via un URL.
 
Par exemple :  
http://monsite/documents/ledocument.txt
 
Les noms de fichier comportant parfois des espaces et/ou caractères spéciaux, j'ai pris le soin d'encoder mes URLs
 
Ainsi pour un nom de fichier : "Salut les gars.txt" , le lien pour y accéder est bien :  
http://monsite/documents/Salut%20les%20gars.txt et ça fonctionne nickel
 
En revance, dès qu'il y a un caractère spécial autre que l'espace, ça ne va plus :  
le fichier "identité.txt" s'accède théoriquement par l'URL :  
http://monsite/documents/identit%E9.txt  
 
et ça me donne un 404 ... le document se trouve bien sûr au bon endroit, et sous IE je peux y accéder par http://monsite/documents/identité.txt , mais des accents dans un URL ça fait sale et surtout ce n'est pas compatible partout ... notamment pour le background downloader d'Adobe qui perd les pédales sur les gros PDF accédés de la sorte.
 
Je voudrais donc pouvoir y accéder via une "url encoded" mais pas moy' ... Je suppose que je dois foirer quelque chose au niveau de la config de mon serveur mais je vois vraiment pas où  :(  
 
Une petite piste ?


Message édité par ZeBix le 10-04-2008 à 17:03:35
Reply

Marsh Posté le 10-04-2008 à 17:01:26   

Reply

Marsh Posté le 10-04-2008 à 17:59:09    

Un moyen serais de passer par un script qui désencoderai l'url et t'offrirais le fichier à télécharger...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 11-04-2008 à 14:08:16    

En fait c'est ce que je fais déjà, et c'est ce script qui foire :) j'ai essayé en lien direct dans le navigateur et la même erreur se produit ...  
 
C'est vraiment étrange ..

Reply

Marsh Posté le 11-04-2008 à 14:18:36    

Normalement tu passes dans l'url =>  
 
<a href='download.php?doc=<?php echo urlencode(identité.txt); ?>'>identité.txt</a>
 
=> Ca te renvoie ca comme url : http://monsite/download.php?doc=identit%E9.txt
 
Derrière, tu fais un coup de decode => urldecode($_GET['doc']) et ca devrait être bon pour récupérer le fichier....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 11-04-2008 à 17:22:24    

OK, trouvé un indice sur ce forum : http://www.webrankinfo.com/forums/viewtopic_22397.htm
 
Mon problème est (encore une fois) un souci de charset.
 
La fonction rawurlencode() que j'utilise, transforme mes "é" en "%E9" , alors qu'elle devrait les transformer en "%c3%a9". Je peux utiliser la solution préconisée sur le post linké ci-dessus (avec un utf8_encode du urlencode) mais avant de devoir tout modifier je voulais savoir s'il y avait moyen de définir quelque part sur mon serveur web que un "é" eh bien c'est "%E9" .. ça m'aiderait beaucoup
 
(on n'a pas besoin du support total de l'utf8, c'est une application client interne et il n'y a que de l'anglais du français et du néerlandais --> le 8859-1 devrait être assez ... )
 

Reply

Marsh Posté le 14-04-2008 à 15:34:35    

Je me permets un petit up car toujours pas trouvé de solution satisfaisante ...

Reply

Marsh Posté le 06-05-2008 à 11:38:27    

Près d'un mois plus tard, encore un petit up car toujours pas de solution :/
 
Pour rappel :  
 
J'accède au document "identité.txt" sur mon serveur sans problèmes via l'URL http://monsite/documents/identit%c3%c9.txt  
 
Et je voudrais y accéder via  
http://monsite/documents/identit%E9.txt  
 
C'est à dire l'encodage donné grâce à la fonction rawurlencode()
(et je ne peux pas utiliser une autre conversion que celle-ci).
 
Quelqu'un a une idée ?
 

Reply

Marsh Posté le 06-05-2008 à 11:51:47    

La fonction rawurlencode encode en RFC 1738 et toi tu voudrais encoder en iso8859-1 avec la même fonction => c'est tout simplement pas possible (ou alors je comprends plus rien)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 06-05-2008 à 14:27:32    

en fait la fonction rawurlencode encode correctement et comme je veux.

 

Si je fais un rawurlencode("entité" ) , cela donne "entit%E9".

 

Mais si via un browser qui pointe sur un fichier de ce nom sur mon serveur, j'essaye d'atteindre celui-ci avec "entit%E9", çe me donne une 404.

 

Je remarque que je peux y accéder par "entit%c3%a9" , mais cela ne me va pas. Je voudrais spécifiquement y accéder par "entit%E9".

 

Le fichier s'appelant en réalité "identité", je suppose que la manière d'interpréter une série de caractères précédés d'un % , pour convertir ceux ci en caractères qui permettent de localiser le fichier, doit être un paramètre du serveur, mais je ne trouve absolument pas où (httpd.conf ou autre).


Message édité par ZeBix le 06-05-2008 à 14:42:41
Reply

Marsh Posté le 07-05-2008 à 11:08:07    

J'ai trouvé ceci sur le site suivant : http://tomcat.apache.org/tomcat-5. [...] /http.html
 

Citation :

HTTP Connector -> Attributes -> Common Attributes -> URIEncoding :
This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.  


 
C'est exactement ça, à part que chez moi visiblement ça a été configuré en UTF-8 (ce n'est pas moi qui ai installé le serveur et la personne qui l'a fait me prétend ne jamais avoir sélectionne une telle option).  
 
Mais impossible de trouver l'endroit où est stockée cette information .. je comprends pas trop :'(

Reply

Marsh Posté le 07-05-2008 à 11:08:07   

Reply

Marsh Posté le 07-05-2008 à 11:24:29    

Normal, tu ne dois pas avoir un serveur tomcat en place (tomcat c'est pour le java)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 07-05-2008 à 11:28:04    

Regarde par là, j'ai pas l'impression que la solution a été trouvé mais ca peut être utile.... => http://www.developpez.net/forums/s [...] p?t=474830


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 07-05-2008 à 14:12:38    

Il se trouve que sur mon serveur de test j'ai Tomcat (utilisé par AlFresco qui est notre outil de développement). Sur le serveur de prod je ne l'ai pas mais quoi qu'il en soit le problème est le même sur les deux serveurs
 
Merci pour le link c'est exactement la description de mon problème. Ah oui tiens mon erreur est également une 403, comme pour l'auteur du topic linké, et pas une 404 comme je le dis ci-dessus..
 
La conclusion est un peu décevante, puisque apparemment il n'y a pas de solution réelle à part renommer les fichiers, ce qui m'est pour ainsi dire impossible ...  
 
Et zut !  :(


Message édité par ZeBix le 07-05-2008 à 14:12:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed