.htaccess : comment transformer les accents d'une URL en code ?
bluemanca
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
bluemanca Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
bluemanca Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous.
Je suis coincé par de nombreux fichiers ayant des accents dans leur nom : je migre un site hébergé sous Windows chez un professionnel vers un autre serveur tournant lui sous Linux chez le même 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 :
Exemples avec des URL demandées dans des balises <IMG> :
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 !
BlueManCa.
Je suis coincé par de nombreux fichiers ayant des accents dans leur nom : je migre un site hébergé sous Windows chez un professionnel vers un autre serveur tournant lui sous Linux chez le même 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 :
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> :
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 !
BlueManCa.
A voir également:
- .htaccess : comment transformer les accents d'une URL en code ?
- Question sur le htaccess ✓ - Forum Référencement
- .Htaccess localhost - Forum Référencement
- You don't have permission to access this resource.server unable to read htaccess file, denying access to be safe - Forum Mozilla Firefox
- Restriction avec .htaccess ✓ - Forum Référencement
- Aide avec chemin.php (.htaccess) ✓ - Forum PHP
1 réponse
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 :
Le fichier "URLRewritingPourIMAGES.php ":
En espérant que cela servira à des personnes confrontées au même problème que moi. ;)
Le fichier .htaccess :
# 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 ":
<?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. ;)