Llevo ya un par de días dándole vueltas al tema, googleando y probando cosas varias, pero no consigo el resultado que quiero.
Se trata de otra consulta sobre una página multi-idioma en php. (Curiosamente por [URL="http://www.forosdelweb.com/f64/web-varios-idiomas-con-misma-url-distinta-952107/#post4018027"]aquí[/URL] se ha comentado estos días algo parecido,que no lo mismo).
Lo que quiero es conseguir direcciones amigables tipo
http://www.midominio.com/es/producto-producto1
en vez de
http://www.midominio.com/index.php?content=productos/producto1.php?lang=es
o
http://www.midominio.com/es/
en vez de
http://www.midominio.com/index.php?lang=es
A continuación os explico un poco como está estructurada la página ahora mismo.
La página tiene un index php que carga la estructura de la página (cabecera, menú horizontal, pie...) constante y un 'cuerpo de la página en el que se incluyen distintos ficheros php dependiendo de la sección que se escoge.
Ahora estoy tratando de implementar las URLs amigables en un servidor Apache, es decir, mediante Urlrewrites. Hasta donde os he contado no hay problema. Lo haría así en el .htaccess:
Código:
Y cambio los enlaces del menú tipo Options +FollowSymLinks RewriteEngine on RewriteRule ^productos-([a-z]*)$ index.php?content=productos/$1\.php
<a href="index.php?content=producto1.php">
por
<a href="productos-producto1">
La url me quedará http://www.misitio.com/productos-producto1
La vida sería muy fácil si todos hablásemos el mismo idioma (salvo para los traductores), pero no es así.
La cosa se complica porque en la cabecera se incluyen dos enlaces para los idiomas disponibles, que hasta ahora son "es" (para castellano) y "gal" (en gallego).
Estos enlaces llaman a una función que añade las variables de idioma.
Código PHP:
<a href="<?php echo add_or_change_parameter("lang", "es"); ?>">es</a>
Código PHP:
function add_or_change_parameter($parameter, $value)
{
$params = array();
$output = "?";
$firstRun = true;
foreach($_GET as $key=>$val)
{
if($key != $parameter)
{
if(!$firstRun)
{
$output .= "&";
}
else
{
$firstRun = false;
}
$output .= $key."=".urldecode($val);
}
}
if(!$firstRun)
$output .= "&";
$output .= $parameter."=".urldecode($value);
return htmlentities($output);
}
?>
Defino la variable de sesión del idioma en un fichero "core.php" que incluyo en el index.php antes de la etiqueta <html> de la siguiente forma:
Código PHP:
<?php
session_start();
if(!isset($_SESSION['idioma']) || !empty($_GET['lang']))
{
if(empty($lang))
{
$lang="es";
$lang = isset($_GET['lang']) ? $_GET['lang'] : "es";
}
$_SESSION['idioma']=$lang;
}
switch ($_SESSION['idioma']) {
case $_SESSION['idioma']: require("lang/".$_SESSION['idioma']."/".$_SESSION['idioma'].".php"); break; }
?>
pero no sé como llamar a la variable %_SESSION['idioma'] y construir un enlace con ella a la página actual.