Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/02/2013, 14:08
Avatar de Adbane
Adbane
 
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 12 años, 10 meses
Puntos: 6
Respuesta: Crear URL's amigables a partir de una entrada

Cita:
Iniciado por Bonez Ver Mensaje
La pasas por URL al construir el enlace en PHP/HTML.

Las URLs no se "crean" en ningún sitio. Tú pones tu enlace que apunte por ejemplo a miweb.com/tG67uJ651d. Y cuando tengas configurado tu .htaccess con su correspondiente expresión regular, entonces Apache al recibir esa petición de URL desde el navegador mirará ese archivo y buscará qué hacer con una url que "sea de 10 letras y/o números". Y como encontrará una concordancia, entonces llamará al archivo que hayas indicado en el archivo .htaccess.

Por ejemplo tienes en tu .htaccess algo así:
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteRule  ^[0-9A-Za-z]{10}/?$ /entrada.php?id=$1 [L]

Entonces en el archivo entrada.php recoges el dato pasado por URL mediante $_GET['id']. Y a partir de ahí, sacas lel registro relativo a ese dato.
Perfecto, funciona, pero solo con enlaces como este: "misitio.com/entrada.php?id=212491D07D".
Ahora bien, la parte del htaccess no logro que funcione correctamente. Me gustaría saber a que hace referencia el $1. Normalmente si paso mi ID generico de 10 caracteres por una variable (es decir, $212491D07D) no lo reconoce. Lo que yo hago es crear una variable que recoge el valor del $_GET['id'] y la paso por la sentencia SQL con un WHERE para seleccionar los valores que necesito, ya si eso luego lo imprimo.

Aunque si pongo en el htaccess el siguiente código:
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteRule  ^[0-9A-Za-z]{10}/?$ /entrada.php?id=212491D07D [L]

Y luego ingreso la url "misitio.com/212491D07D", reconoce el contenido que pertenece a "212491D07D". :/

EDIT: Bueno más o menos diría que solucionado, quitando la expresión regular, he puesto (\w+), que sería el valor que se guarda en el $1. Aunque desconozco si es la mejor manera de hacerlo...

Quedaría así:
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteRule  ^(\w+)/?$ /entrada.php?id=212491D07D [L]
__________________
Diseñador web por amor al arte, o al HTML mejor dicho

Última edición por Adbane; 22/02/2013 a las 14:26 Razón: Más o menos solucionado.