Rewriting – Afficher une image différente en fonction du langage

Pour cet exemple, je voudrais que sur mon site mon logo soit différent en fonction du langage du visiteur.

Toutefois, l’adresse de l’image doit rester la même, c’est à dire: http://monsite/images/logo.png

1/ Dans mon dossier /images/ je créé 2 dossiers “fr” et “en”, je place à l’intérieur mes deux logos différents mais avec le même nom de fichier et extension.

directories

2/ Toujours dans /images/, je créé un fichier .htaccess, qui va me permettre de rediriger toute les demandes vers un script PHP:

RewriteEngine On
RewriteRule ^(.*\.(png|jpg|gif))$ images.php [L]

3/ Enfin, je créé le script PHP pour afficher l’image que je veux:

<?php

if( isset( $_SERVER['REQUEST_URI'] ) ) {

    // l'image demandé
    $image =  rtrim($_SERVER['REQUEST_URI'], '/');
    $image = substr($image, strripos($image, '/') + 1);

    // on récupère la langue
    $lang = get_language(); // à vous de la déterminer

    // le dossier où ce trouve l'image
    $path = __DIR__ . '/' . $lang . '/' . $image;

    if( file_exists($path) ) { // le fichier existe

        // le header
        header('Content-Type: image/png');

        // le contenu
        readfile( $path );
        exit();
    }
}

// L'image demandé n'existe pas ?>
<h1>Not Found</h1>

Nb: rajouter une regex pour sécuriser le nom du fichier.

Une piste pour détecter le langage du navigateur: http://stackoverflow.com/questions/1352130/php-language-detection