En este caso, sólo redireccionaría a otra página si el idioma es inglés
El código sería para ponerlo en el index
<?php $idiomas = explode(",",strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] )); $numeroIdiomas = count($idiomas); for ($i=0;$i<$numeroIdiomas;$i++) { $idiomaUsuario = substr($idiomas[$i],0,2); if ($idiomaUsuario === "en") { header("location:/eng/");
}
$i = $numeroIdiomas;
}
?>
El código original, no comparto un pequeño detalle, no entiendo la necesidad de redirigir a la carpeta "/es", lo suyo es que si has hecho la web para un idioma - alojada en el servidor del pais correspondiente -, por defecto sea en ese idioma (y no se mueva de ahí) el dominio principal y las opciones de otros idiomas, estén en carpetas.
<?php $idiomas = explode(",",strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] )); $numeroIdiomas = count($idiomas); for ($i=0;$i<$numeroIdiomas;$i++) { $idiomaUsuario = substr($idiomas[$i],0,2); //evitando problemas con en-eu, etc... switch ($idiomaUsuario) { // comprobamos si el navegador está en castellano case "es": $idioma = 'es/'; $i = $numeroIdiomas; break; // comprobamos si el navegador está en inglés case "en": $idioma = 'eng/'; $i = $numeroIdiomas; break; // por defecto dejamos el idioma castellano default: $idioma = 'es/'; break; } } header("location:/".$idioma.""); ?>
Debería establecerse el código en la index del idioma predeterminado y establecer la redirección ahí.
Para solo un idioma, podemos usar un if en lugar de un switch case
<?php $idiomas = explode(",",strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] )); $numeroIdiomas = count($idiomas); for ($i=0;$i<$numeroIdiomas;$i++) { $idiomaUsuario = substr($idiomas[$i],0,2); if ($idiomaUsuario === "en") { header("location:/eng/"); } $i = $numeroIdiomas; } ?>
En el .htaccess {a mi no me funciona}
# BEGIN REDIRIGIR POR IDIOMA RewriteEngine on RewriteCond %{HTTP:Accept-Language} (en) [NC] RewriteRule .* /en/ [R,L] # END REDIRIGIR POR IDIOMA
{Una versión encontrada a posteriori con más opciones}