Bonjour,
Savez-vous pourquoi avec Apache 2
- Le é est encodé %c3%a9 au lieu de %e9
- 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
Bonjour,
Savez-vous pourquoi avec Apache 2
- Le é est encodé %c3%a9 au lieu de %e9
- 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
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 ?
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 :
me renvoient les erreurs :
C'est une erreur de configuration Apache ou PHP je suppose...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
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 :
- httpd.conf
- php.ini
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é ?
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.
Y a quoi d'autre dans ton .htaccess lié à l'authentification ? Tu peux essayer en le supprimant ?
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)
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:
- J'ai supprimé les accents de mon système de fichier. ( fait )
- Je migre en 130 000 lignes en UTF-8 ( C'était prévu )
- J'ai peur que mes requêtes html échouent ( à voir )
- J'ai quelques caractères accentués encodés un fois de trop selon les navigateurs ( contourné )
- Supprimer les accents des dossiers et fichiers
- Conserver vos fichiers en ANSI
NotePad++ permet de convertir vos fichiers.
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 :
- Je tape http://monserveur/identité.html, ça roule
- Je tape http://monserveur/identit%E9.html - boum error 403
- Je tape http://monserveur/identit%c3%a9.html - ça roule
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 ...
![]()
Partager