$CFG->wwwroot = IP_Pública; //Por ejemplo 81.94.107.111
no funcionara. Claro, tampoco puedo sustituir la IP_Pública por la IP interna del servidor pues eso provoca que la plataforma deje de funcionar desde fuera de la LAN (Bueno, funciona pero no carga bien las CSS) Así que tampoco vale la entrada en config.php:
$CFG->wwwroot = IP_interna_del _servidor; //Por ejemplo 192.168.1.100
Soluciones hay varias. La más evidente es colocar la plataforma en un servidor externo con lo que me olvido de todos los problemas. Pero si nos apetece tener todo en nuestro servidor, podemos aplicar un simple IF en PHP para detectar si la máquina que se está conectando es de una red interna o externa. Así, y suponiendo que la red interna tiene IPs tipo 192.168.1.XXX (si no es así hay que cambiar la expresión regular), el código a meter en config.php sería:
$client_ip =$_SERVER['REMOTE_ADDR'];
if ( preg_match("/^192\\.168\\.1\\.*/", $client_ip) )
{
$CFG->wwwroot = 'http://192.168.1.100';
}
else
{
$CFG->wwwroot = 'http://81.94.107.111';
}
$_SERVER['REMOTE_ADDR'] devuelve la IP remota (no nos preocupan posibles proxies para este caso)
preg_match comprueba si una cadena (en este caso $client_ip) encaja en una expresión regular (en este caso la expresioń regular busca IP que empiecen por 192.168.1.). Si coinciden se usa la dirección interna pues estamos en la red interna. Si no, se usa la dirección externa.
La idea la obtuve de este artículo de EsLoMas (¡Gracias!).
No hay comentarios:
Publicar un comentario