Tengo un Joomla multi-idioma que de momento sólo tiene 2 idiomas:
- mi-dominio.com/es/
- mi-dominio.com/en/
El problema es que si hago un header:location dentro del index.php para que redirija a mi-dominio.com/es/ esto funciona, pero evidentemente cuando entre a mi-dominio.com/es/ se leerá nuevamente el index.php y por tanto se leerá nuevamente la redirección, y por consiguiente esto provoca un bucle infinito que causa un error: Chrome dice que hubo un error y no pudo cargarse la página porque el website intentó múltiples redirecciones.
¿Cómo evitar que redirija en un bucle infinito?
Finalmente me las arreglé así, pero dudo mucho que sea la mejor forma de hacerlo:
Código PHP:
if ( !isset($_SESSION["pais_cliente"]) ) {
$_SESSION["pais_cliente"] = getCountryFromIP($_SERVER["REMOTE_ADDR"]);
$pais_cliente = $_SESSION["pais_cliente"];
$_SESSION["num_redirecciones"] = 1;
if ( ($pais_cliente == "EN") || ($pais_cliente == "UK") ) {
header('Location: http://www.mi-dominio.com/en/');
}
else {
header('Location: http://www.mi-dominio.com/es/');
}
}
else {
$_SESSION["num_redirecciones"] ++;
$pais_cliente = $_SESSION["pais_cliente"];
if ( $_SESSION["num_redirecciones"] <= 2 ) {
if ( ($pais_cliente == "EN") || ($pais_cliente == "UK") ) {
header('Location: http://www.mi-dominio.com/en/');
}
else {
header('Location: http://www.mi-dominio.com/es/');
}
}
}
¿Cómo arreglo esto?
Saludos