Foros del Web » Administración de Sistemas » Software para Servers »

Dudas con las URL's amigables

Estas en el tema de Dudas con las URL's amigables en el foro de Software para Servers en Foros del Web. Muy buenas a todos! Acabo de crear una página web de noticias online y una de las cosas que menos me gusta es tener las ...
  #1 (permalink)  
Antiguo 17/10/2011, 11:16
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 2
Dudas con las URL's amigables

Muy buenas a todos!
Acabo de crear una página web de noticias online y una de las cosas que menos me gusta es tener las noticias con URLS tipicas -> www.xxxxx.com/noticia.php?id=34

He estado leyendo sobre hacer las URLS amigables y de hecho lo he intentado, pero he fracasado en el intento, quizas porque hago algo mal o directamente porque no se asimilar el concepto.

Os explico el funcionamiento de mi web:

Tengo una tabla de noticias con los siguientes campos: id,titulo,noticia,autor,categoria y fecha.

Para mostrar todas las noticias utilizo un foreach y para visualizarla, lo envio todo a noticia.php con su corresponeidnete id. En noticia.php recibo el id por GET con
Código PHP:
$_GET['id'
El codigo de la web para hacer URLS amigables que encontré es este:

Código:
# Activar RewriteEngine
RewriteEngine on
 
# Reescribir la URL solicitada por el usuario
#   Entrada:  clientes/NOMBRE/
#   Salida: noticia.php?id=NUMERO
RewriteRule ^noticia/(\w+)/?$ noticias.php?id=$1
Hasta aqui todo bien. La URLS se me reescribe pero mi principal duda...Quiero un sistema bien hecho, si el titular de la noticia es: Steve Jobs muere, quiero que en la URLS haya .../noticia/steve-jobs-muere y no /noticia/34/steve-jobs-muere o cosas semejantes para coger el id. No quiero numeros en la URL. Como hago para hacer el select de esa noticia si no tengo ningun ID para buscarlo en la base de datos? Esa es la primera pregunta, la segunda es: Como convierto un titular a el modo "amigable" con guiones, sin mayusculas ni caracteres extraños, ni nada?

Se me hace un mundo y de momento, este tema da un nivel bajo a mi web.

Aparte de esto tengo otra preguntita. En cada noticia tengo un like de facebook enlazado por id: noticia.php?id=5. Si hago URLS amigables perderé todos los likes que hay en esa URL?

Gracias por su ayuda!!! :)
  #2 (permalink)  
Antiguo 17/10/2011, 21:04
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 13 años, 1 mes
Puntos: 48
Respuesta: Dudas con las URL's amigables

amigo es casi imposible hacer una url amigable sin un id. La razón es bastante simple,¿Que pasa si el titulo de una noticia se repite?.Se debe tener un id y en caso que no quieras un id puedes hacerlo por fecha. ejemplo
2011/10/16/steve-jobs-muere
Pero si repites el titulo en el dia tendras dos noticias a las que apuntar por lo que es preferible usar una id.

con respecto a lo del like de facebook.... no tendras problemas porque uno apunta a un enlace en facebook y tendrias que seguir apuntando a ese enlace(noticia.php?id=XXXX)...

otra cosa ....te funciona esto que escribiste?:
RewriteRule ^noticia/(\w+)/?$ noticias.php?id=$1

porque si mal no recuerdo el \w+ es para letras de la A hasta la Z y en el id pasas numeros.
  #3 (permalink)  
Antiguo 17/10/2011, 23:55
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 2
Respuesta: Dudas con las URL's amigables

Hola!!!

En cuanto a lo de no pasar el id, lo digo porque lo he visto. Para muestra un botón: http://www.xataka.com/fotografia/can...estia-japonesa. Esta web tiene todas sus noticias codificadas sin el ID. Ahora, si me dices que sería más fácil pasando un ID, eso ya es otra cosa. Es posible hacer algo como lo de la URL de arriba?

En cuanto a RewriteRule ^noticia/(\w+)/?$ noticias.php?id=$1, juraría que funcionaba. No me hagas caso ya que no me entretube mucho tiempo con esto, pero diría que funcionaba.

La pregunta ahora es: Si es MUY dificil hacer una URL sin ID, hago algo del estilo: noticia/34/hola-mundo ?

Gracias!!
  #4 (permalink)  
Antiguo 18/10/2011, 07:31
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 13 años, 1 mes
Puntos: 48
Respuesta: Dudas con las URL's amigables

....mmm vi la pagina y bueno podrias hacer una pagina sin id y si el titulo se llegara a repetir se le asigna una id al que se esta repitiendo.ej:
noticia 1:
/noticia/steve-job-muere
noticia 2:
/noticia/02/steve-job-muere

eso de agregarle los guiones al titulo en la url es opcional pero yo lo recomiendo porque si lo dejas con espacios pueden aparecer con un %20.
Para evitar eso tienes que tener una funcion que transforme los espacios(%20) a guiones(-) y cuando alguien solicite steve-jobs-muere tu mandas una consulta algo asi a tu base de datos:
Código PHP:
Ver original
  1. $titulo = $_GET['titulo'];//steve%20jobs%20muere;
  2. $titulo = str_replace('%20','-',$titulo);
  3. $titulo = str_replace(' ','-',$titulo);
  4. $consulta = mysql_query("select * from noticias where Replace(Titulo,' ','-')='".$titulo."'");

sigo preferiendo con id...pero bueno podrias hacer que si se repite el titulo le agregas el id.
  #5 (permalink)  
Antiguo 18/10/2011, 09:02
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 2
Respuesta: Dudas con las URL's amigables

Tiene buena pinta!

Lo probaré a ver y en el caso de que no me salga, probaré con id...En cuanto lo pruebe expongo aqui como me ha ido.

De todos modos si alguien tiene otra solución al problema, bienvenido sea!
Gracias! :D

Etiquetas: apache, url-amigables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:05.