IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[.htaccess] Comment transformer les accents d'une URL en leur code ?


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 28
    Points
    28
    Par défaut [.htaccess] Comment transformer les accents d'une URL en leur code ?
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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 !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 28
    Points
    28
    Par défaut Première solution
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment transformer les valeur d'une colonne en pourcentage?
    Par sinoun dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 25/08/2017, 16h45
  2. comment récupère les accents d'une donnée dans une table?
    Par sth56 dans le forum Administration
    Réponses: 1
    Dernier message: 26/06/2009, 22h27
  3. [ServerSocket][URL] Comment récupérer les arguments d'une URL?
    Par nramariavelo dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 20/06/2006, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo