.htaccess : comment transformer les accents en leur code ?

Petit nouveau ! | 2 Messages

15 mai 2013, 14:46

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 !

Petit nouveau ! | 2 Messages

16 mai 2013, 16:35

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. ;)

Petit nouveau ! | 1 Messages

15 mai 2015, 10:12

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 www.comparateur-mutuelle-assurance-sante.com 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. ;)

bonjour,

Je suis entrain de réaliser l'interface d'administration blog du tp "blog avec des commentaires" du tuto de Matteo21. J'ai crée les .htaccess et .htpasswd dans un dossier admin mais ceux ci semblent ne pas fonctionner car lorsque j'essaie d'accèder à admin, le serveur local (localhost) me demande login et password, je les rentre et il me les redemande, même si ils sont bons.

J'ai vu que cela pouvait venir d'un mauvais chemin d'accès à .htpasswd dans .htaccess mais j'ai vérifié, le chemin absolu est le bon; il m'a été donné par :



<?php echo realpath('chemin.php'); ?>


Voici les 2 fichiers en question:

.htaccess:

AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile "/opt/lampp/htdocs/tests/blog_avec_commentaires/admin/.htpasswd"
Require valid-user


.htpasswd:

jphi:$1$UHXprCtJ$9tDOJOUm68giWoKRGxE64/



J'ai essayé de mettre un password crypté et non crypté dans .htpasswd, ni l'un ni l'autre solutionnent le problème.

Savez-vous quel est le problème?

Merci beaucoup pour votre aide