.htaccess : comment transformer les accents en code ?

Développement, conception de sites web, PHP, (X)HTML, ASP, Ajax, CSS, Javascript, Flash, MySQL, et autres ont leurs entrées dans cette section. On peut aussi parler d'hébergement, de maintenance, de sécurité...

Modérateur: Modérateurs

.htaccess : comment transformer les accents en code ?

Messagepar blueman » 15 Mai 2013 13:38

Bonjour à tous.

Je suis coincé par de nombreux fichiers ayant des accents dans leur nom : je migre un site hébergé sous Windows vers un autre serveur tournant lui sous Linux (hébergés chez un professionnel), et j'ai beaucoup d'images ayant

des noms de fichiers avec des accents : impossible de changer leur nom vu leur nombre, et vu l'utilisation immense dans les nombreuses pages et aussi dans la base de données sous la forme d'HTML stocké.

Comment, grâce à de l'URL Rewriting, transformer un nom d'un fichier demandé (ou une URL) par un nom avec des codes en lieu et place des accents ?

Exemples avec des noms de fichier :

Code: Tout sélectionner
NOM DE FICHIER                TRANSFORMATION SOUHAITÉE

Un_bel_été.jpg                Un_bel_%e9t%e9.jpg
Je_vais_à_la_plage.gif        Je_vais_%e0_la_plage.gif


Exemples avec des URL demandées dans des balises <IMG> :

Code: Tout sélectionner
URL demandée par la propriété SRC                TRANSFORMATION SOUHAITÉE

http://monsite/IMAGES/Un_bel_été.jpg             http://monsite/IMAGES/Un_bel_%e9t%e9.jpg
IMAGES/Je_vais_à_la_plage.gif                    IMAGES/Je_vais_%e0_la_plage.gif


En fait, voici une liste d'accents NON EXHAUSTIVE et de leur code associé que je souhaiterais convertir grâce à .htaccess :

è : %e8
é : %e9
à : %e0
È : %c8
É : %c9
À : %c0
etc...

Précision : je cherche une solution exclusivement mis en oeuvre grâce à du code tapé dans .htaccess.

Merci à tous !
Avatar de l’utilisateur
blueman
 
Messages: 9
Inscription: 13 Déc 2010 18:45

Re: .htaccess : comment transformer les accents en code ?

Messagepar blueman » 16 Mai 2013 15:33

Bon, grâce à l'aide d'un internaute bienveillant, "yponomeut", et divers peaufinages, je suis parvenu à trouver une première solution qui marche nickel :

Le fichier .htaccess :

Code: Tout sélectionner
# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

# Réécriture des fichiers images n'ayant pas été trouvés :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule IMAGES/(.*)$  http://www.monsite.extension/URLRewritingPourIMAGES.php?img=$1 [L]


Le fichier "URLRewritingPourIMAGES.php ":

Code: Tout sélectionner
<?php
//------------------------------------------------------------------------------
// URLRewritingPourIMAGES.php
//------------------------------------------------------------------------------
// Définit certaines variables pour mon site dont $LIAISON_Root nécessaire ici
include_once "FFTI.inc.php";

if (isset($_GET['img']))
{
  $NomFichierImage = $_GET['img'];
 
  $TabAccents = array('é','è','ê','ë','È','É','Ê','Ë','à','â','ä','À','Â','Ä','ù','û','ü','Ù','Û','Ü','î','ï','Î','Ï','ô','ö','Ô','Ö');
 
  for($i=0; $i<count($TabAccents); $i++) {$TabAccentsUTF8[] = utf8_encode($TabAccents[$i]);}
  $NomFichierImage = str_replace($TabAccentsUTF8, $TabAccents, $NomFichierImage);
 
  // $LIAISON_Root doit contenir le chemin physique sur le disque dur (il est initialisé par FFTI.inc.php)
  $PathFileName = $LIAISON_Root.'IMAGES/'.$NomFichierImage;
  $Extension = strtoupper(substr($PathFileName,-3));
 
  switch ($Extension)
  {
    case 'JPG': $Header = 'Content-Type: image/jpeg'; break;
    case 'GIF': $Header = 'Content-Type: image/gif'; break;
    case 'PNG': $Header = 'Content-Type: image/png'; break;
    default : exit("URLRewritingPourIMAGES.php : Type d'image non implémenté : [$Extension]");
  }
 
  header($Header);
  readfile($PathFileName);
}
//------------------------------ FIN DE FICHIER ------------------------------?>

En espérant que cela servira à des personnes confrontées au même problème que moi. ;)
Avatar de l’utilisateur
blueman
 
Messages: 9
Inscription: 13 Déc 2010 18:45

Re: .htaccess : comment transformer les accents en code ?

Messagepar Revjones » 16 Mai 2013 15:37

Merci d'avoir partagé la soluce :supers:
Avatar de l’utilisateur
Revjones
Modérateur
Modérateur
 
Messages: 5591
Inscription: 04 Fév 2003 17:59
Localisation: Suisse


Retourner vers Développement, conception de sites web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité