Cita:
Iniciado por Bonez 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 originalRewriteEngine On
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 originalRewriteEngine On
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 originalRewriteEngine On
RewriteRule ^(\w+)/?$ /entrada.php?id=212491D07D [L]