web-dev-qa-db-fra.com

Servez index.html par langue et par jeu de caractères (une chose du passé)

Dans le cadre d’un projet d’archéologie numérique, j’ai trouvé un répertoire de serveurs Web contenant des fichiers datant de 2001 contenant une collection particulière de fichiers index.html et portant des noms se terminant par deux codes de lettre de langues différentes et de jeux de caractères de langue, c.-à-d.

index.html.ca       index.html.ja.jis   index.html.ru.iso-ru
index.html.cz       index.html.kr.iso-kr    index.html.ru.koi8-r
index.html.de       index.html.lb.utf8  index.html.ru.ucs2
index.html.dk       index.html.nl       index.html.ru.ucs4
index.html.ee       index.html.nn       index.html.ru.utf8
...

Comment configurer Apache moderne pour qu'il serve différentes pages statiques en fonction de la valeur de Accept-Language en-tête?

3
Dmitri Chubarov

Ces fichiers sont presque certainement destinés à être servis via négociation de contenu Apache . Comme il ne semble pas exister de fichier .var destiné à servir de mappage de type explicite, et comme les extensions de nom de fichier correspondent aux codes de langage et de jeu de caractères standard, elles sont probablement destinées à être utilisées avec le code implicite MultiViews mécanisme.

Pour activer MultiViews pour le répertoire contenant ces fichiers, ajoutez la directive suivante dans un fichier .htaccess de ce répertoire (ou dans une section <Directory> correspondante de la configuration globale d'Apache):

Options +MultiViews

Cela permettra à Apache de résoudre automatiquement les demandes de fichiers inexistants en ajoutant des extensions supplémentaires basées sur les préférences de langue, de type MIME et de jeu de caractères indiquées par les en-têtes HTTP Accept, Accept-Charset et Accept-Language. Par exemple, une demande de index.html pourrait amener Apache à renvoyer le contenu de index.html.de ou index.html.ja.jis ou index.html.ru.utf8, en fonction de la ou des langues préférées configurées dans l'utilisateur. navigateur.

Notez que, outre la négociation de contenu, vous devez également fournir aux utilisateurs un moyen de sélectionner explicitement la version de la page qu'ils préfèrent. Lorsque vous utilisez MultiViews, cela peut être aussi simple que de fournir des liens directs vers les pages traduites avec le code de langue inclus.

2
Ilmari Karonen

Je recommanderais d'émettre des redirections afin que les moteurs de recherche puissent afficher des URL uniques pour chaque langue. Voici quelques règles de réécriture que vous pourriez utiliser dans votre fichier . Htaccess:

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^index.html$ /index.html.de [L,R=302]
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^index.html$ /index.html.ru.utf8 [L,R=302]
...
  • NC n'est "pas de cas" (insensible à la casse)
  • L est "dernier" (arrête le traitement des autres règles)
  • R=302 est une redirection temporaire

Vous aurez toujours besoin d'un index.html par défaut pour les navigateurs qui n'envoient pas l'en-tête avec une valeur reconnue.

2
Stephen Ostermiller