Problema con $_server['request_uri'] y mod_rewrite

Estoy desarrollando un proyecto php multilenguaje. Como no domino el tema de las rules de mod_rewrite, he ido desarrollando pensando en ello pero sin aplicar nada, es decir, la estructura de las variables pasadas por get es siempre la misama ya con ese objetivo pero no ha hecho las rules.

Para cambiar de idioma, como lo que me interesaba era que el usuario no volviera al principio sino que siguiera en la misma página, hice lo siguiente.

function url_mod($idioma) {
$adreca = $_SERVER['REQUEST_URI'];
 $posicio = strpos($adreca,'idi=');
 if ($posicio>0) {
     $nova_adreca = str_replace(substr($adreca,$posicio,6),'idi='.$idioma,$adreca);
 } else {
     $posicio2 = strpos($adreca,'?');
     if ($posicio2>0) {
         $nova_adreca = str_replace(substr($adreca,$posicio2,1),'?idi='.$idioma.'&',$adreca);
     } else {
         $nova_adreca = $adreca . '?idi=' . $idioma;
     }
 }
 return $nova_adreca;
}

Dicho de otra forma, cojo la dirección actual, compruebo si existe la variable del idioma en ella y sustituyo el idioma por el nuevo.

Hasta aquí todo correcto y funcionando, ¿pero ahora me he puesto con el tema de las rules y me encuentro que ahora mi url no es?idi=es&page... Sino que es /es/productos...

Al hacerlo creí que debía cambiar mi función para buscar la cadena '/es/' en la url pero mi sorpresa es que el $_SERVER['REQUEST_URI'] me devuelve algo muy raro y entiendo que es problema del mod_rewrite pero no se porque.

No sé si me he explicado bien, ¿me puedes echar una mano?

Necesito poder hacer una función similar o alguna alternativa para poder conservar al usuario en la página en la que se encuentra cambiando el idioma. No sé si hay algo que se pueda utilizar mediante rules...

1 respuesta

Respuesta

Aunque en la URL ponga /es/lo que sea, a la página, le llega el contenido completo de la URL que hayas decidido por htaccess. No veo tu archivo htaccess, así que no se muy bien como lo estás haciendo, me falta información.

Echa un vistazo aquí, te puede dar buenas ideas:

http://stackoverflow.com/questions/2743435/rewrite-language-extension-in-urls-with-htaccess

Aquí lo tienes:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /index.php?idi=$1 [NC]
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?idi=$1&page=$2 [NC]
RewriteRule ^([^/]*)/([^/]*)\.html$ /ssl/index.php?idi=$1&page=$2 [NC]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /ssl/index.php?idi=$1&page=$2&item=$3&titol=$4 [NC,L]

Echaré un vistazo también al link que me envías.

Saludos,

Si, echa un vistazo porque creo que es justo lo que necesitas...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas