Aller au contenu

Change
Bienvenue sur GeekZone
Inscrivez-vous sur GeekZone pour profiter des fonctions avancées du forum, proposer des news, participer aux conversations, ouvrir votre galerie, profiter de la messagerie interne et venir tester nos modérateurs avec du bon troll... Attention, ils ont la gâchette facile. C’est aussi pour ça que GeekZone est le meilleur site de passionnés depuis 2002 ! Si vous avez déjà un compte, connectez-vous - sinon, il est temps d'en créer un.

[Apache] Servir des pages statiques html avec des accents

- - - - -

  • Veuillez vous connecter pour répondre
7 réponses à ce sujet

#1
Styx31

Styx31

    Lord Jedi Geek

  • Membre
  • PipPipPipPip
  • 941 messages
  • Lieu:Toulouse
Question toute bête, mais par défaut cela ne fonctionne pas.

J'ai des pages html statiques avec des accents dans le nom (plein, avec des caractères horribles genre Œ, É, Ç, etc.). Le fichier possède bien l'accent quand je liste les fichiers via ftp (ou shell)...

Par contre, quand j'essaie d'accéder à la page via apache :
- Soit j'encode le caractère avec le pagecode par défaut (genre Caract%e9ristique.html) et ça fonctionne
- Soit je tape directement l'accent dans l'url (genre Caractéristique.html) et apache me renvoie un 404 avec "The requested URL /drp/Caractéristique.html was not found on this server." (les caractères ainsi).

Donc j'ai bien compris : google chrome (et ses compères aussi) encodent les url en utf-8 (normal), et apache décode ça avec l'encoding classique, donc lorsqu'il reçoit l'url Caract%C3%A9ristique.html (qui correspond bien au "é" encodé en utf-8), il transforme ça en encoding classique et trouve donc 0xc3 = Ã et 0xa9 = ©.

Ma question est simple : qu'ai-je fait de mal ? Pourquoi tant de haine ? Ou plus simplement, comment faire pour qu'apache accepte les url en utf-8 avec accent ? Ceux qui ont un serveur apache sous la main peuvent faire le test simplement et me dire si ça fonctionne ?

Point bonus : je n'ai pas accès au serveur en question, donc je m'en remet à ceux qui ont un serveur unix avec une version d'apache similaire (2.2.16 sur le serveur en question) pour m'aider à trouver quoi faire pour que cela fonctionne.

Merci par avance :)

Edit : le serveur sur lequel je bosse a peut-être une configuration à la con, peut-être qu'apache gère normalement ça très bien... Mais dans ce cas j'aimerai savoir comment faire pour que ce dossier fonctionne correctement (.htaccess & cie) si c'est possible, ou bien sinon quoi dire à l'admin pour qu'il me règle ça ?

Edit 2 : Bien sur j'ai invoqué !google, mais rien de concluant... Je ne dois pas être le seul sur terre à vouloir faire ça, donc je pencherai plutôt sur un config problématique.

Edit 3 : Bon je viens de tester sur mon ftp perso free, et ça fonctionne très bien... Donc je pencherai sur une configuration à la con chez notre hébergeur...

Modifié par Styx31, 18 July 2011 - 21:10.

C++ is like a watching an old movie you remembered fondly and then finding out that it really sucked - Rick Strahl
When C++ is your hammer, everything starts to look like your thumb - Anon

#2
nusul

nusul

    Jedi Geek

  • Membre
  • PipPipPip
  • 284 messages
pourquoi ne pas utiliser les codes html universels? http://www.w3schools...ef_entities.asp la colonne "entity name"

comme: é é

#3
Styx31

Styx31

    Lord Jedi Geek

  • Membre
  • PipPipPipPip
  • 941 messages
  • Lieu:Toulouse

Voir le messagenusul, le 18 July 2011 - 21:20, dit :

pourquoi ne pas utiliser les codes html universels? http://www.w3schools...ef_entities.asp la colonne "entity name"

comme: é é
On parle d'encodage d'url, pas d'html.

De plus, le but est bien de permettre d'avoir une url "propre" (avec le "é" du mot qui apparaît bien dans la barre d'adresse). Wikipedia le fait bien, on ne voit pas d'entités dans l'url.

Exemple : http://fr.wikipedia.org/wiki/Œuf
Et pas : http://fr.wikipedia.org/wiki/%C5%92uf (qui marche aussi)

Edit : D'ailleurs pour le "fun", wikipedia accepte aussi l'url avec le Œ encodé en latin-1 : http://fr.wikipedia.org/wiki/%8cuf (%8c = Œ en latin-1)

Modifié par Styx31, 18 July 2011 - 21:31.

C++ is like a watching an old movie you remembered fondly and then finding out that it really sucked - Rick Strahl
When C++ is your hammer, everything starts to look like your thumb - Anon

#4
fser

fser

    Yoda Geek

  • Membre
  • PipPipPipPipPipPip
  • 2455 messages
Réponse bête: chezmoiçamarche, sur un OS X 10.6.8 et sur une debian 5.0

Pour le mac:

~  httpd -v	 
Server version: Apache/2.2.17 (Unix)
~ env
...
LC_CTYPE=en_US.UTF-8
...
~  locale
LANG="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_ALL=

Pour la debian:

# apache2 -v
Server version: Apache/2.2.9 (Debian)
# locale
LANG=en_GB
LC_CTYPE="en_GB"
LC_NUMERIC="en_GB"
LC_TIME="en_GB"
LC_COLLATE="en_GB"
LC_MONETARY="en_GB"
LC_MESSAGES="en_GB"
LC_PAPER="en_GB"
LC_NAME="en_GB"
LC_ADDRESS="en_GB"
LC_TELEPHONE="en_GB"
LC_MEASUREMENT="en_GB"
LC_IDENTIFICATION="en_GB"
LC_ALL=

Bref, config par défaut des deux côtés, et pas de problèmes.
"Et sinon, Jessica elle meurt à la fin."

#5
eldana

eldana

    Padawan Geek

  • Membre
  • PipPip
  • 101 messages
j'aurais tendance a dire mod_rewrite, ou la réecriture des url à la volée peut etre ton ami.

http://www.webmaster...-reecriture-des

Citation

Une faciale en HD, ca doit envoyer grave!
Image IPB

http://so-frenchy.fr

#6
nolan

nolan

    Senseï Geek

  • Membre
  • PipPipPipPipPip
  • 1951 messages

Voir le messageeldana, le 19 July 2011 - 07:37, dit :

j'aurais tendance a dire mod_rewrite, ou la réecriture des url à la volée peut etre ton ami.

http://www.webmaster...-reecriture-des
+1

Je me souviens avoir fait ça à un moment, dans une autre vie. Mais ça ne me paraît pas très robuste (si on oublie un caractère, si on désactive mod_rewrite pour une raison quelconque, etc.). Une solution qui passe par la config d'Apache me paraît plus saine.

#7
Styx31

Styx31

    Lord Jedi Geek

  • Membre
  • PipPipPipPip
  • 941 messages
  • Lieu:Toulouse
Je reviens à la charge, à priori ils ont changé d'hébergeur mais le souci est le même :

Not Found

The requested URL /Matériel.html was not found on this server.

J'ai tenté le AddDefaultCharset UTF-8 sur le .htaccess qui n'a rien changé bien sur comme je m'en doutais : cette option concerne uniquement les headers apache HTTP, donc rien à voir avec mon problème.

Je soupçonne une vieille config de locale sur leur système qui du coup tente de trouver les fichiers en ISO-pouetpouet plutôt qu'en UTF-8.

Sauf que cette fois j'ai un accès FTP direct (mais pas de SSH pour l'instant)

J'aimerai bien être sur de la raison de ce souci.

Ma question est donc la suivante : est-ce que je peux, via une page PHP, me remonter les informations sur les locales du système pour confirmer que les locales sont en ISO ? En gros obtenir les informations qu'a remonté fser dans son message ?

Edit : ok, trouvé !

<?php 
$output = shell_exec('locale');
echo "<pre>$output</pre>";
?>

Et le résultat :

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Question suivante : ça parle à quelqu'un ? :) A priori, pas d'information sur un quelconque encodage... Je cherche d'autres commandes à vérifier.

Modifié par Styx31, 12 December 2011 - 12:37.

C++ is like a watching an old movie you remembered fondly and then finding out that it really sucked - Rick Strahl
When C++ is your hammer, everything starts to look like your thumb - Anon

#8
LoneWolf

LoneWolf

    Daily Geek Only

  • Membre
  • PipPipPipPipPipPip
  • 3687 messages
Ouais. Ca veut dire que ta locale est pas définie ou plus precisement, c'est le réglage par défaut (des fois, tu as POSIX et des fois "C")
Ca tourne donc:
_en locale US, donc date inversée, attention aux . et au , dans les chiffres, etc
_en ISO-8859-1 (peut etre en 15, donc avec le sigle euro, mais pas sur)

Il faut que tu vois avec l’hébergeur pour passer au moins en charset UTF-8 parce que sinon, c'est indéterminable et encore moins avec qu'un accès FTP. Le seul moyen éventuel serait de réussir a forcer en iso les noms de fichiers UTF, mais je sais pas si un client FTP peut faire ca...

LoneWolf
La joie (ou pas) des charsets...
Image IPBImage IPB




1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)