Un espacio para los entusiastas del web

59 com comentarios en total.
6 jul 2006
84.974 Lecturas
Tags: PHP, SEO,

Optimizando una web con urls amigables con Apache y PHP

En este manual usted aprenderá cómo optimizar de manera sencilla una web dinámica hecha en PHP, cuyas urls pasadas a los enlaces contengan extensas variables mediante GET, a una web cuyas URL sean amigables (fáciles de recordar).

Los que programamos en PHP, o bajo cualquier otro lenguaje de programación orientado a web, por lo general tendemos a pasar datos de una web origen a otra destino mediante variables del tipo GET generando enlaces tal como:

http://www.tiperu.com/index.php?mod=ecommerce&producto=tienda&op=3 que difícilmente son indexadas por algunos buscadores y lo que es peor aún: son nada asimilables por un usuario común (a este grupo de URL las llamaremos URL extensas para efectos del presente artículo).

Si lo vemos desde esa perspectiva justo sería afirmar que las web dinámicas tienen desventajas en ese ámbito sobre las web estáticas del tipo http://www.tiperu.com/ecommerce.html que son mucho más fáciles de recordar por su simpleza y carencia de variables vía GET, a este tipo de URL las conocemos (y me referiré a ellas en adelante) como URL amigables.

Quiero dejar en claro que lejos de la división convencional entre lo que son web estáticas o dinámicas en este manual me referiré a ambas en función a la diferencia de URL especificadas en el párrafo anterior  hecha la aclaración continuo con el artículo.

Felizmente para los que usamos Apache como servidor web, conjuntamente con PHP, esto tiene solución gracias al módulo mod_rewrite (URL Rewriting Engine) que nos permitirá mediante unas cuantas reglas transformar nuestras URL extensas en URL amigables.

Si bien es altamente aconsejable aprender el correcto manejo del mod_rewrite y sus correspondientes reglas, en este artículo no se hará explicación extensiva del mismo.

Debido a que el objetivo principal, es mostrar al lector cómo optimizar una web de URL extensas a URL amigables; con esto quiero dejar claro que se asume que el lector posee un website ya creado con URL extensas y desea pasarlas fácilmente a URL amigables “en un dos por tres”.

Preparando el archivo “.htaccess”:

El archivo .htaccess nos permite pasarle información al servidor Apache para que cumpla ciertas reglas de configuración en la carpeta que lo contenga, por tal motivo debemos copiar este archivo en la carpeta que contengan los archivos php en los cuales realizaremos los cambios de URL:

Options +FollowSymLinks
RewriteEngine on
#4 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9
#3 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7
#2 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5
#1 variable
Rewriterule ^(.*)/(.*),(.*)/$ $1.php?$2=$3

En las dos primeras líneas nos aseguramos de que esté activado el mod_rewrite en el Apache (si esto no funciona deberá comunicarse con su administrador para que active el módulo en el servidor).

Las líneas antecedidas por “#”, como las 3, 5, 7 y 9 ; son simplemente comentarios, no los tome en cuenta.

En las líneas 4, 6, 8 y 10 se establecen las reglas que nos permitirán transformar nuestras URL extensas en amigables. Analizaremos aquella que permite transformar dos variables, las demás son similares:

Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

La expresión (Rewriterule) es la que nos permitirá escribir la regla en el Apache. La cadena (^(.*)/(.*),(.*)/(.*),(.*)/$) permite escribirá la URL amigable, inicia desde el caracter ^ hasta el $. Y finalmente la cadena ($1.php?$2=$3&$4=$5) es nuestro URL extenso. La transformación se hará de la siguiente manera:

De URL extensa:

./index.php?categoria=monitores&productoID=12345

En URL amigable:

./index/categoria,monitores/productoID,12345/

Como se puede apreciar la regla tomara el nombre del script y le quitara la extensión “.php” para tomarlo como un directorio (nótese la parte en negritas):

Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

./index.php?categoria=monitores&productoID=12345
./index/categoria,monitores/productoID,12345/

Seguidamente toma el primer par ?valor=variable y lo transfroma en una subcarpeta valor,variable/:

Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

./index.php?categoria=monitores&productoID=12345
./index/categoria,monitores/productoID,12345/

Y finalmente hace lo propio con el par &valor=variable y lo transforma en una subcarpeta valor,variable/:

Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

./index.php?categoria=monitores&productoID=12345
./index/categoria,monitores/productoID,12345/

Como ya se habrá dado cuenta, los valores antecedidos por el símbolo dólar ($) en la parte de las URL extensas reemplazan a los (.*) de las URL amigables.

Bueno ya tenemos el archivo .htacces que nos permitirá lograr los resultados que deseamos a nivel del servidor, ahora procederemos a crear el script php que nos permita cambiar nuestras URL extensas en amigables sin tener que hacer ninguna modificación directa en los “N” enlaces que posea nuestro sitio web.

Generando el script en php:

El script php que se usaremos se encargará básicamente de tomar la URL extensa, si esta ha sido pasada mediante el método GET, y la transformará en una URL amigable a la cual redireccionará usando la función header.

Puesto que header redireccionará hacia la misma web, y esto causará lo que se conoce como un bucle infinito, se hará uso de variables de sesión que nos ayuden a evitar tal inconveniente.

Por tal motivo nuestro script se seccionará en 2 partes: la primera irá en las primeras líneas de todas las páginas a las que aplicaremos el script, y la segunda parte (encargada de limpiar la variable de sesión) irá al final de las páginas.

Aclarados los detalles, explicaré mediante comentarios el script php:

<?php

//Iniciamos o continuamos la sesión encargada de evitar el bucle infinito

	session_name("url_amigable");
	session_start(); //Almacenamos datos del server, script y variables (pasadas por GET)
	$Server=$_SERVER[´SERVER_NAME´];
	$Script=$_SERVER[´PHP_SELF´];
	$Variables=$_SERVER[´QUERY_STRING´]; //Verificando si tiene variables por GET

//y no se han pasado datos mediante un form por POST, ya que al redireccionar un post puede ocasionar errores.
//también verificamos que la variable de sesión ‘Listo’, sea diferente a 1, esto nos eviara un bucle infinito.

	if(!empty($Variables) & $_SERVER[’REQUEST_METHOD’]==’GET’ && $_SESSION[’Listo’]!=1){

//Si tiene variables pasadas por GET se procede a hacer el cambio.
//1. Agrupando $Variables por “variable=valor” en el array $Variable.

$Variable=explode(”&”,$Variables);
//2. Sustituyendo “=” por “,” y concadenandolo en variable $Amigable.
($i=0; $i < count($Variable); $i++){
$Amigable.="/".str_replace("=",",",$Variable[$i]);
} //3. Quitando la extension “.php” a $Script para simular un directorio.

$Dir=str_replace(”.php”,”",$Script); //4. Generando la URL Amigable.
$URL_AMIGABLE=”http://”.$Server.$Dir.$Amigable.”/”;
//5. Colocando la variable de sesión ‘Listo’ a 1 para evitar el bucle infinito al redireccionar la web.

$_SESSION[’Listo’]=1;
//6. Redireccionando a la url amigable

header(”Location: $URL_AMIGABLE”);
//7. Exit hará que culmine hasta este punto el script, si no estuviera ‘exit’el script continuaría ejecutándose y llegaría hasta el final del mismo, es decir,
// a la parte donde colocamos a la variable de sesión ‘Listo’ en cero, originándose, entonces un bucle infinito.
exit;

}//Cambie $_URL_BASE por la ruta raiz de su web, ya que al simular la url amigable.
//directorios, hará que no muestre adecuadamente los orígenes de los recursos que llama su página web.

$_URL_BASE="http://”.$Server.”/pruebas/url_amigable/index.php";
?>
<html>
<head>
<title >URL Amigables</title>
<base href = "<? echo $_URL_BASE; ?>" target="_top" />
</head>
<body>
<!-- Aquí el contenido de su página web -->
</body>
</html>
<?php
//Limpia el posible bucle, es decir, se puede volver a hacer el envío.
$_SESSION[’Listo’]=0;
?>

Recomendaciones finales:

Como habrán podido ver el script no es complicado, y la adaptación a una web ya constituida tampoco lo será. Ya he probado la técnica en uno de mis proyectos (de manera local) y me ha funcionado bastante bien.

Lo que sí quiero aclarar es que al momento de testear esta técnica en una url de 5 variables a más me generó errores (básicamente no encuentra la url amigable generada); una url de 4 variables redirecciona correctamente, pero si luego de ello refresco el navegador genera el mismo error, es decir, no (re)carga la url amigable.

Mi consejo es que usen esta técnica en una url de 3 a menos de 3 variables pasadas por GET y personalicen este script a sus necesidades. Y como es lógico, les aconsejo bastante informarse más sobre el uso del mod_rewrite en Apache, creanme que les aliviará más de un dolor de cabeza.

Finalmente les diré que pueden descargarse el script desde aquí: url_amigable.zip.

Este artículo fue publicado originalmente en willy.tiperu.com.

William Wong GarayWilliam Wong Garay para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo

Síguenos en: @maestros | /maestrosdelweb

Comentarios

  1. Mario

    El texto no se puede leer bien, ya que lee cosas como “Este artículo fue publicado originalmente en  willy.tiperu.com por William Wong Garay.”

    1. juan

      Esa web de “willy.tiperu.com” no existe….

  2. Carla

    Y como se puede hacer los mismo pero con Microsoft y ASP?

  3. William Wong Garay

    Saludos comunidad, hola Carla… pues cureoseaba en los anuncios que salen en los google adsense de mi articulo y note que uno de ellos hablaba de un modulo similar pero para IIS de MS, revise someramente su web y hay una version libre y otra de paga, lo puedes ver en http://www.isapirewrite.com/ el modulo se llama isapi_rewrite. Espero te sea de utilidad y nos cuentes al respecto.

    En cuanto a Mario, pues te pediria que seas mas especifico con tu crítica.

    Nos vemos…

  4. Alex Rettig - globalMac.c

    Hola!
    Un jakarito me dió este url amigable ;-) -semanas después de propias investigaciones habiéndolo implementado con éxito en http://www.blogalmac.cl y http://www.globalmac.cl-
    Comparto otras fuentes:
    http://www.alistapart.com/articles/succeed
    http://www.seochat.com/seo-tools/url-rewriting/
    Gran artículo! felicitancias :-)

    // http://www.globalmac.cl //

  5. Saul_HarmFul

    no uses asp :)

  6. Cesar Camacho.

    emm habia leido esto antes, pero no encuentro que sea de gran utilidad. creo que justamente la garantia de ocupar GET , es que le permite al usuario es ir cambiando valores para ir obteniendo nuevos resultados. Creo que es muy rebuscado tal situacion.

  7. Marcelo

    muy bueno el articulo, yo tengo una pregunta, quiero hacer un rewrite rule para un listado con paginacion:

    quiero que quede asi, ej.:

    /manuales/id34/php/ (pagina 1)
    /manuales/id34/php/1/ (tambien pagina 1)
    /manuales/id34/php/2/ (pagina 2)
    /manuales/id34/php/3/ (pagina 3)
    ?. (etc.)

    Hay una forma de hacerlo? porque intente pero no me sale:

    RewriteRule manuales/(.*)/(.*)/(.*)/$ /manuales/listado.php?id=$1&tit=$2&pag=1

    Con esa regla me sale error al poner sin el /1/ de paginacion, intente poner dos reglas, una debajo de la otra pero tampoco va. Existe algo para agregar o alguna forma de hacerlo?

    Ojala puedan ayudarme! GRacias!

  8. Bane

    Yo utilice la informacion otorgada en este sitio que encuentro mas sencillo y aplique de manera exitosa:

    http://www.tutorial-enlace.net/tutorial-P%E1ginas_din%E1micas_y_buscadores-825.html

    Recomiendo eso si que los links sean absolutos y no relativos, es decir /urlamipagina.php en vez de ../urlamipagina.php por ejemplo.

    Pueden ver su utilizacion en http://www.war2hobby.cl/noticias.php

  9. RULO

    Lo que estaba buscando. Gracias por el artículo.

  10. Gustavo

    Como hace google para esconder la extensión..(google.com/search?..)

  11. presidente

    q me recomiendan ya logre

    mod
    nombre_del_articulo.html
    nombre-del-articulo.html
    nombre/del/articulo.html
    nombre+del+articulo.html
    cual es mejor para google yo creo q el ultimo porq el buscador de google busca nombre+del+articulo
    yo creo q este es magnifico opiniones

  12. A mi me ha parecido interesante el artículo. Junto con el y algunos otros se puede empezar a entender el mod_rewrite, gracias ;D

  13. Saul_HarmFul

    Saul_HarmFul porque dices que no usen ASP?, di 2 razones logicas con suficiente peso

  14. Freddy

    Hola, quisiera saber, como darle al final la extension.html al momento de pasar los valores.

  15. Saludos Freddy… debes usar \.html al final de tu regexp para lograr tal efecto. Ojo con el “\.”, este valor de escape te permitirá usar el “.” en tu expresión regular.

  16. danraf77

    hay otra manera de hacer urls amigables sin el uso de .htaccess? mi servidor no me deja subir dicho archivo ya me lo dijo, es yahoo hosting

  17. Hola, felicidades por el tutorial. Sólo quería añadir dos cosas:

    1. Para que el .htaccess funcione correctamente hay que añadir el flag [L] al final de cada línea o sino la primera variable despues del nombre del archivo siempre tendrá el valor de la última ya que seguirá cambiando los valores línea por línea.

    2. No es necesario especificar las rutas absolutas en cada enlace interno. Se puede solucionar facilmente añadiendo la línea al header.

    Un saludo.

  18. Vaya, no salió el código html para el head… es el siguiente:

    (head)
    (base href=”dominio.com” /)
    (/head)

    Hay que cambiar los parentesis por los sígnos de abrir y cerrar comando.

  19. Este tutorial es lo que exactamente estaba buscando, lo he entendido en un 50%, la parte que no entiendo es como instalar o como llamar al script que convierte las URL largas en amigables. Es decir, en el archivo que descargue esta un index.php, pero tengo que sustituir este archivo por el index de mi sitio?.. espero haberme dado a entender… gracias.

  20. Hola,estoy haciendo un sito de busqueda de videos. Ya tengo cambiado el htaccess, pero lo que quiero es que cuando alguien escribe su busqueda y pulsa buscar en un formulario, la pagina que devuelva los resultados no sea por ejemplo : http://www.isinvideo.com/buscar.php?busco=“sexo”
    sino asi
    http://www.isinvideo.com/buscar/sexo.html

  21. Muy buenas. Tengo una pequeña duda.
    Tengo implementado el mod_rewrite en mi web:
    http://www.alquiberia.es
    Pero tengo un problema cuando supero las 10 variables. Todo funciona perfectamente mientras no supere las 10 variables.
    Por ejemplo:
    Rewriterule ^([^/]+)-([^/]+)/([^/]+)-([^/]+)/([^/]+)-([^/]+)/([^/]+)-([^/]+)\.html$ index.php?$1=$2&$3=$4&$5=$6&$7=$8 [NC,L]

    Funciona perfectamente pero si supero las 9 variables falla y mezcla el valor de las variables.

    Alguna sugerencia???

    Gracias

  22. hole

    hola estoy trabajando en un portal modo localhost u si este manual para url cortas va bien solo quería saber una ultima cosa en cosa si tengo un formulario que este en POST en ves GET que se debe manda error cuando quiero mandar un comentario no conseguido saber como pasar url corta a un formulario pasado a POST si me pueden ayudar gracias

  23. hole

    hola cuando visualizo en Internet explorer 7 veo un error este ‘split(…). 1 es nulo o no es un objeto
    esta mirando en todo el código no visto nada es mas si me conecto de una pc diferente en mi red con el Internet explorer 7 no me sale este error por puede ser

  24. hole

    alguien me puede responeder a estas dos preguntas
    1- si tengo un formulario que este en POST en ves GET que se debe manda error
    2 – un error este ’split(…). 1 es nulo o no es un objeto

  25. Tengo un problema… Me andan los links… Pero lo que no me anda es el CSS, cuando uso un permalink el archivo CSS no me lo carga… y se ve todo feo sin los estilos… como soluciono esto?

  26. kAn

    Me ha venido de perlas la documentación. Me falta tan sólo una cosilla. Sabeis que regla rewrite usar para cambiar todas las .php al mismo nombre pero sin el .php ¿?¿?

  27. kAn

    Diego,yo también tuve ese problema. La solución a lo que preguntas es poner:

    (example.com es la raiz)

    dentro del de la página que no te carga el css

  28. kAn

    No me deja poner código. Lo que tienes que poner dentro del head es

    ABRE ETIQUETA base href IGUAL “www.example.com/” CIERRA ETIQUETA (example.com es la raiz)

  29. laraz

    Como puedo manejar los parámetros que anteriormente pasaba por un get si ahora me cambia la url a amigable.

  30. Mira yo estoy preparando un portal de ventas que me toma los links de otra pagina y me aparece los signos #& y me he vuelto loco para tratar de sacarlos un ejemplo del link seria http://www.mipagina.com/s__#&195 la verdad que ya me tiene mareado este tema asi que cualquier consejo es bien venido

  31. Chema

    Hola que tal, tengo un problema y quisiera su ayuda, tengo una web con un carpeta en raiz del tipo:

    mostrarrestauranteseleccionado.php?Id=252&Restaurante=Mariscos%20El%20G%FCero%20-%20Calz.%20P.%20D%EDaz

    y la quisiera del tipo

    Restaurante/Mariscos-El-Guero

    como puedo escribir el Rewrite?, en este caso el ID=252, pero tengo id´s de 1,2,3,4 y 5 digitos.

    Les agradezco muchísimo su tiempo

  32. hola muy buen tema, me sirbe muchisimo pero tengo una duda logre hacerlo pero el codigo de fuente no me lo modifica…

    me podrian ayudar con mi problema aka les dejo el tema que hice:

    http://www.forosdelweb.com/f58/url-imaginarias-741023/

    muchas gracias

  33. Hola ya hice todo pero tengo una pregunta para cambiar esto a mi web:

    $_URL_BASE=”http://”.$Server.”/pruebas/url_amigable/index.php”;

    Este es tu ejemplo y mi web es http://www.remiserostudio.com

    y mi formulario es

    http://www.remiserostudio.com/contactanos.php

    no entiendo como debo implementar eso

    $_URL_BASE=”http://”.$Server.”/pruebas/url_amigable/index.php”;

    porque me sale un error

  34. <?php

    //Iniciamos o continuamos la sesión encargada de evitar el bucle infinito
    session_name("url_amigable");
    session_start(); //Almacenamos datos del server, script y variables (pasadas por GET)
    $Server=$_SERVER["SERVER_NAME"];
    $Script=$_SERVER["PHP_SELF"];
    $Variables=$_SERVER["QUERY_STRING"]; //Verificando si tiene variables por GET

    //y no se han pasado datos mediante un form por POST, ya que al redireccionar un post puede ocasionar errores.
    //también verificamos que la variable de sesión ‘Listo", sea diferente a 1, esto nos eviara un bucle infinito.
    if(!empty($Variables) & $_SERVER["REQUEST_METHOD"]=="GET" && $_SESSION["Listo"]!=1){

    //Si tiene variables pasadas por GET se procede a hacer el cambio.
    //1. Agrupando $Variables por “variable=valor" en el array $Variable.
    $Variable=explode("&",$Variables);

    //2. Sustituyendo “=" por “/" y concadenandolo en variable $Amigable.
    for ($i=0; $i

  35. Gracias serper, porfin le he dado en el clavo, que lo he conseguido, tengo otra pregunta, si implemento en esta web http://www.remiserostudio.com, cuyas paginas internas estan en html y no en php, y las cambio a url amigables, bajara mi posicionamiento.??

  36. Gracias por el tutorial. No fue fácil entender la parte de las expresiones regulares de htaccess pero apliqué lo aprendido en http://www.puromotor.cl y logré el objetivo que estaba buscando. De todas maneras les doy un consejo: tengan cuidado al simular directorios porque si la página tiene rutas relativas (por ejemplo a los archivos css o js) no encontrará los archivos. Saludos.

  37. desde mi punto de vista creo que te complicaste o complicaste mucho explicar esta metodologia del mod rewrite la verdad a simple vista este tuto no lo entendi es un metodo muy extenso.

  38. reyvolsam

    Me funciono al 95% :p , por que el codigo manda error de sintaxis en la linea 20, pero gracias a Serper pude arreglarlo y me funciono de maravilla.
    Ahora toca experimentar un poco para pulir esa direccion :p

    ¡¡¡SALUDOS!!

  39. César

    buenos dias,

    estoy usando este script, y creo que solucione el problema de cuando se repiten las variables y que sale error cuando se maneja mas variables que las definidas en el .htaccess,

    $URL_AMIGABLE = “http://” . $Server . $Dir . ( strpos( $Dir, $Amigable ) === FALSE ? $Amigable . “/” : ” );

    Se verifica si el par variable=valor ya ha sido lanzada si no, coloca la que corresponde.

    Atentamente. un servidor

  40. Buneo amigosa despues de haber sufrido un par de semans con las urls amigables, me di cuenta que es cencillo hacerla, con solo el htaccess y algunas funciones php para corregir la url, el secreto esta en .htacces

    saludos

  41. Tengo una pregunta.
    El orden en que se escriben las reglas en el .hatccess.. Importa?

  42. José Luis

    Yo lo estoy probando para transformar la URL de páginas que resultan de las consultas provenientes de un formulario. El problema es que en Safari y Opera, en la URL también aparece el nombre de la sesión (url_amigable) y su correspondiente valor.
    Hasta el momento no he podido eliminar el nombre y el valor de la sesión de la URL.

  43. Hola acabo de leer el tutorial que me pareció muy bueno para aprender lo básico en URL Amigables y también he leído todos los comentarios en esta página, bueno quiero adicionar 2 aportes muy importantes que creo que la mayoría de programadores o amateurs en URL amigables quizás confundan, como son:

    1. La gran mayoría cree que la función: RewriteRule de Apache dentro de un .htaccess es la que se encarga de cambiar las URL extensas a URL Cortas, eso es totalmente falso, pues en realidad lo que se encarga es de INTERPRETAR las URL_CORTAS como URL_EXTENSAS en una página web, y, lo que convierte a URL CORTAS es el código PHP que en este manual se menciona.

    Cómo demostrarlo?, pues prueben lo siguiente:

    /***************************/
    Archivo .httaccess
    /***************************/
    RewriteEngine on
    #4 variables
    Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9 [L]
    #3 variables
    Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7 [L]
    #2 variables
    Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5 [L]
    #1 variable
    Rewriterule ^(.*)/(.*),(.*)/$ $1.php?$2=$3 [L]

    /***************************/
    Archivo index.php
    /***************************/
    “.$_SERVER['QUERY_STRING'];
    exit;
    ?>
    Probando…
    1. Escriban en su navegador web la siguiente url:
    ./index/categoria,monitores/productoID,12345/
    2. Ahora escriban lo siguiente:
    ./index.php?categoria=monitores&productoID=12345

    Si se darán cuenta la URL corresponde a la regla #2 del archivo .htaccess :

    #2 variables
    Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5 [L]

    Entonces ambas mostrará siempre el mismo valor:
    /********************/
    SERVER[QUERY_STRING]=> categoria=monitores&productoID=12345
    /********************/
    Que se puede deducir aquí?, Si cuando se envia una URL de formato: ^(.*)/(.*),(.*)/(.*),(.*)/$ se va a INTERPRETAR como: $1.php?$2=$3&$4=$5, (aquí actúa el RewriteRule del .htaccess), caso contrario, es decir si se envía otra url en otro formato, no tiene efecto esta INTERPRETACION, y se muestra en el navegador lo que se envía.

    2. Lo que menciona “Josué Ramos” de que: “Para que el .htaccess funcione correctamente hay que añadir el flag [L] al final de cada línea o sino la primera variable despues del nombre del archivo siempre tendrá el valor de la última ya que seguirá cambiando los valores línea por línea.”, es muy importantísimo tomarlo siempre en cuenta, pues haciendo unas pruebas me considerado que esa es la raíz del problema que tiene el ejemplo que está descrito en este tutorial
    Cómo probarlo:
    Es el error que muestra el ejemplo del tutorial, para resolverlo debemos de poner al final de cada línea el flag: [L].

    Y listo, por favor cualquier comentario merezca la pena como aporte a mejorar en conjunto, nuestros conocimiento.

    Saludos
    Ingº Danny Chininin
    IT Consulting and Web Marketing

    1. Si Gamez, es una URL amigable

  44. Estoy haciendo urls amigables y tus ejemplos me han servido, gracias

Los comentarios de este post están cerrados. Si quieres seguir la discusión, debatir, criticar, sugerir o expandir el tema te invitamos a hacerlo en tu propio blog, en twitter o donde puedas publicar. No olvides enlazar a este post para que sigamos la conversación y se genere un trackback.



Acerca de
Maestros del Web nace cuando intentamos traducir Webmaster al Español. Nacimos orientados al diseño y desarrollo web. Hoy somos un espacio de apoyo para los entusiastas que participan en proyectos en la red.
Leer más de Maestros del Web