Ver Mensaje Individual
  #23 (permalink)  
Antiguo 04/10/2010, 20:15
Avatar de memoadian
memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Ayuda! Urls Amigables desde 0

a ver te diré una forma pero allá tu si luego tienes problemas, ya que quitar el id en estos casos puede generarte muchos problemas.

la forma es que al hacer la consulta, no reconozcas por el id si no por el titulo, pero aqui viene una gran problema y es que dicen los que saben que en las urls no debes tener mayusculas ni signos extraños, por lo que si aplicas esto tendrias que aceptar urls del tipo

http://miweb.com/EL nuevo software de LInux¡¡¡

ya que el titulo de tu post podria ser eso :S que mal ¿no?

se pierde el sentido de urls amigables y ademas limitas los signos en tus posts

ahora bien podrias solucionarlo teniendo una tabla mysql así:

id | nom_post | nom_link
------------------------------------------------
2 | El BUEN linux¡¡¡ | el-buen-linux

para que?

pues facil, al insertar en tu BD cualquier nuevo post al titulo lo guardas en tu BD como nom_post, de este modo lo puedes imprimir en tu web tal como lo guardaste en la BD con acentos, Ñ, etc. y luego le pasas una funcion que te quite todo eso y lo remplaze con guiones como la que ya tienes, despues de eso guardarla como nom link y asi podrás llamarla desde la url
(el problema de esto es que te saldrian dos urls iguales con estos dos titulos por ejemplo
EL Buen LinuX¡¡¡
El buen linux)

una vez entendido el riesgo podemos hacer la consulta
teniendo una url amigable de este modo

http://miweb.com/articulos/la-buena-vida.html

que reescriba en Rewrite rule así

Rewriterule ^articulos/(.*).html$ articulo.php?titulo=$1

tendriamos simplemente que poner esto:

SELECT * FROM mitabla WHERE nom_link = $GET['titulo'];

ahora si, buscamos en la tabla la coincidencia por el titulo del post sin problemas de signos por lo menos y no por el id y con buenos resultados.

espero haya sido claro, y te sirva de algo lo que dije.