IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

URI Encoding - encodage automatique des liens


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Par défaut URI Encoding - encodage automatique des liens
    Bonjour,

    Savez-vous pourquoi avec Apache 2
    1. Le é est encodé %c3%a9 au lieu de %e9
    2. Les urls avec un accents encodé %e9 renvoient la page 403 Forbidden


    Je migre de easyPHP 1.8 à WampServer 2.0.

    sûre il ne fallait pas utiliser les accents

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Il est où, ton accent ? Dans un nom de fichier ou en tant que paramètre ? Il est encodé où, quand et comment par Apache 2 ?

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Par défaut
    Les accents sont dans le nom des dossiers, exemple : http://127.0.0.1/test/Références/

    l'uri http://127.0.0.1/test/R%E9f%E9rences/ me renvoie une erreur 403 Forbidden.

    et les uri :
    1. http://127.0.0.1/test/R%C3%A9f%C3%A9rences/
    2. http://127.0.0.1/test/Références/


    me renvoient les erreurs :

    Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Unknown: Failed opening required 'C:/www/test/Références/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0
    C'est une erreur de configuration Apache ou PHP je suppose...

    En clair, il est écrit dans le fichier access.log :
    127.0.0.1 - - [19/Jan/2008:19:13:49 +0100] "GET /test/R%E9f%E9rences/ HTTP/1.1" 403 304
    127.0.0.1 - - [19/Jan/2008:19:19:42 +0100] "GET /test/R%C3%A9f%C3%A9rences/ HTTP/1.1" 200 294
    127.0.0.1 - - [19/Jan/2008:19:19:44 +0100] "GET /test/R%C3%A9f%C3%A9rences/ HTTP/1.1" 200 294
    127.0.0.1 - - [20/Jan/2008:02:33:38 +0100] "GET /test/%40rbo/ HTTP/1.1" 200 7313

    Pour l'instant je cherche une solution dans les fichiers :
    1. httpd.conf
    2. php.ini

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pourquoi tu mets des accents dans tes noms de fichiers ou de répertoires ? Faut jamais faire ça, tu vois bien le pb !! Le plus simple c'est de les virer, ça t'évitera bon nombre de pb. C'est possible ou tu veux vraiment conserver tes accents ?

    De toutes les erreurs, je pense que la première (Forbidden) est la plus significative : je pense que c'est la bonne URL mais qu'il y a un fichier .htaccess ou une conf dans un quoi qui bloque l'accès. Tu as regardé de ce côté ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Par défaut
    Je veux des accents dans mes dossiers... c'est tout.

    J'ai commenter dans mon fichier .htaccess la ligne :
    # options All -Indexes
    Elle bloque la navigation dans les répertoires sans fichier index.php et j'ai le même résultat.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Y a quoi d'autre dans ton .htaccess lié à l'authentification ? Tu peux essayer en le supprimant ?

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Par défaut
    Pour ceux qui tomberaient sur ce forum, voici quelques infos au sujet de l'encodage des URL.

    Les RFC citées précédemment sont obsolètes. Aujourd'hui, c'est la 3986 qui s'applique (http://tools.ietf.org/html/rfc3986).

    Donc la recommandation est d'utiliser l'UTF-8 pour écrire le chemin puis de convertir les caractères non ASCII en utilisant %?? où ?? est l'écriture hexadécimale de l'octet.
    On trouve une excellente explication et des tests sur une page du W3C : http://www.w3.org/International/articles/idn-and-iri/

    Les anciens navigateurs utilisaient le jeu de caractères de la page ou latin-1 (ISO-8859-1) et non UTF-8, ce qui rejettait bien des langues. Dans IE6, l'option "URL with UTF-8 encoding" est apparue. Dans IE7, cette option est activée par défaut. Les navigateurs Opera et Safari respectent aussi la RFC. Malheureusement Firefox en est apparement resté au niveau d'IE6 (du moins dans la configuration par défaut sous Windows).

    Pour illustrer mon propos : avec le lien http://serveur.fr/différentes voici ce que différents navigateurs envoient au serveur (requête HTTP GET).
    FF2 : http://serveur.fr/diff%E9rentes (config FF2.11 Windows par défaut)
    IE6 : http://serveur.fr/diff\xe9rentes
    IE7 : http://serveur.fr/diff%C3%A9rentes (Idem pour Safari et Opera)

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Par défaut
    NB: Quelque soit l'encodage :

    [client]
    L 'URI "http://serveur.fr/diff%E9rentes" est prise en charge ( vu dans la barre d'adresse ) avec easyPHP 1.8, ( Apache 1.3 ) sur windows... que ce soit :
    • FF 2.0.0.11
    • IE7
    • Safari 3.0.4



    [serveur]
    Par contre, quelque soit la version d'Apache sur Wamp ce type d'adresse est refusé.

    La question : Comment configurer Apache ?

    Remarque:
    1. J'ai supprimé les accents de mon système de fichier. ( fait )
    2. Je migre en 130 000 lignes en UTF-8 ( C'était prévu )
    3. J'ai peur que mes requêtes html échouent ( à voir )
    4. J'ai quelques caractères accentués encodés un fois de trop selon les navigateurs ( contourné )

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 11
    Par défaut Conclusion
    1. Supprimer les accents des dossiers et fichiers
    2. Conserver vos fichiers en ANSI


    NotePad++ permet de convertir vos fichiers.

  10. #10
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut idem ici !
    Bonjour à tous, ceci est mon premier message sur ce forum. C'est un utilisateur d'un forum concurrent où j'avais posté exactement le même problème, auquel je ne trouve pas de solution.

    Ma config : Apache2 sur serveur Win2K3 (eh oui ... ).

    Je mets un fichier "identité.html" sur mon serveur. Via IE7, j'y accède sans aucun blème via :
    http://monserveur/identité.html
    Avec un accent dans la barre d'adresse, oui oui! ça tombe plutôt bien que IE7 propose cette option, parce que on a à peu près 8000 fichiers qui ont été importés dynamiquement, et le lien vers leur emplacement dans l'arborescence aussi .... et les scripts d'imports n'ont pas été customisés pour prendre en compte les accents.

    Y'a un truc bien dans ma situation : les fichiers "à problèmes" (ceux avec accents) ne s'accèdent pas directement, mais via des URLs stockées dans une base de données. Il me "suffit" donc de formater mes URLs correctement.

    Bref, jusqu'ici donc (et étant donné que je suis sur un Intranet et que seul IE7 est le browser officiel), tout fonctionne bien. Seul souci : les gros fichiers PDF (et il y en a beaucoup). IE7 "interprète" l'accent correctement (probablement en %c3%a9 mais en vérité je n'en sais rien) , commence le download puis "relaye" celui-ci à Adobe Reader, qui plante joyeusement car il ne trouve pas le fichier en question.

    Je dois donc trouver un moyen d'encoder mes URLs, et c'est comme ça que je suis tombé sur cet os :



    Vous me direz, j'ai qu'à encoder toutes mes URLs de la troisième manière mais j'ai un petit problème : certaines URLs ont été créées par d'autres scripts (php) qui utilisent la fonction rawurlencode(). Celle-ci encode d'office les "é" en %E9 , point à la ligne. Je n'ai pas trouvé comment encoder directement "correctement".

    L'IDEAL était de trouver une manière de faire comprendre au serveur que %E9 = é, mais visiblement si je comprends les réponses ci-dessus, ce n'est possible que moyennant une recompil Apache...
    Je poste ce message au cas où entretemps une solution existe de ce côté là, ou alors je me mettrai à la lourde tâche de convertir mes URLs mais sur ce point il me faudrait un petit coup de main pour l'encoding correct ...


Discussions similaires

  1. Activation automatique des liens hypertextes
    Par Vincent_59 dans le forum Word
    Réponses: 4
    Dernier message: 06/08/2008, 14h45
  2. Actualisations automatiques des liens dans mon script
    Par Geekolin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/01/2008, 14h01
  3. [AJAX] récupération automatique des liens
    Par 2kerhs dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/01/2007, 16h51
  4. Outil pour vérification automatique des liens
    Par zazaraignée dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/01/2005, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo