Foros del Web » Creando para Internet » HTML »

url amigables +base de datos

Estas en el tema de url amigables +base de datos en el foro de HTML en Foros del Web. Hola, Estoy diseñando una web y me gustaría hacer uso de "url amigables". Estoy leyendo y por ahí y veo que la solución principal es ...
  #1 (permalink)  
Antiguo 23/09/2013, 10:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
url amigables +base de datos

Hola,

Estoy diseñando una web y me gustaría hacer uso de "url amigables".

Estoy leyendo y por ahí y veo que la solución principal es el archivo ".httpaccess", mediante el cual, podría escribir una directiva "rewrite" y pasar de algo tipo:

a Pero, ¿Qué pasa si el alumno id=7 es "emilio lópez" y necesito una url amigable del tipo?

Entiendo que no hay una norma "rewrite" para el archivo de .httpaccess que me perimta hacer esto y tendré que consultar la base de datos de alguna forma, no? Se puede consultar la base de datos desde el .httpaccess.


(el id de los alumnos es un número y no un "nombre"...no puedo hacer cosas del tipo
Cita:
www.colegio.com/alumnos.php?id_alumno="juan-lopez"
).

Alguna pista?

Bueno muchas gracias a todos por adelantado!!
  #2 (permalink)  
Antiguo 23/09/2013, 13:30
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: url amigables +base de datos

El nombre del archivo es .htaccess.

Si se puede hacer eso. Pero obviamente tendrías que crear un campo en tu base de datos que guarde ese dato (juan-lopez) y en vez de acceder por su identificador numérico accedes mediante ese campo.

Tu base de datos tendría que contener algo así:

Código:
id: 7
name: Juan Lopez
name_slug: juan-lopez
Y ya accedes por ahí.

Otra opción sería por ejemplo que la URL fuera algo tipo /alumnos/7-juan-lopez, y ya sólo el dato numérico y sigues trabajando con tu ID.
  #3 (permalink)  
Antiguo 23/09/2013, 14:50
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

pzin, muchas gracias por tu repuesta.

Pero una cosa, estoy trabajando en wordpress y veo que yo le meto en la dirección del navegador:

"miwordpress.com/page_id=7" y lo transforma en "miwordpress.com/noticias". En algún lugar, debe haber una tabla del tipo:

id=7
slug: noticias

el id no hace ninguna referencia al slug y, sin embargo, en algún momento se debe de acceder a la base de datos para saber que al id=7 le corresponde el slug "noticias"...en este caso, en qué momento se esta accediendo a la base de datos? habrá algún codigo php/js que accedea a la base de datos y haga esta conversión?

Gracias!!
  #4 (permalink)  
Antiguo 23/09/2013, 15:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: url amigables +base de datos

No sé cómo funciona Wordpress, formas pueden haber varias. Si quieres te muevo el tema al subforo de Wordpress.
  #5 (permalink)  
Antiguo 23/09/2013, 15:24
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

bueno, lo de wordpress es solo un ejemplo de un sitio que hace esto. Quizá, la cosa, en si misma, no es tema específico de wordpress....imagino que esto se hará en más webs.

Se te ocurre por dónde podrían ir los tiros para que lo pueda investigar?

gracias.
  #6 (permalink)  
Antiguo 23/09/2013, 15:33
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: url amigables +base de datos

No sé, como digo puede hacerse de varias maneras. No obstante, estamos hablando de reescribir URLs, no de redirecciones, que es un poco diferente.
  #7 (permalink)  
Antiguo 23/09/2013, 15:37
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

ok, yo seguiré mirando...a ver si lo averiguo...gracias!
  #8 (permalink)  
Antiguo 25/09/2013, 11:35
Avatar de MiNick  
Fecha de Ingreso: octubre-2012
Ubicación: Las Palmas de Gran Canaria
Mensajes: 23
Antigüedad: 12 años
Puntos: 3
Respuesta: url amigables +base de datos

Es lo que te decía el compañero "pzin": se hace a través de una hoja que debes de tener en el directorio base de tu servidor. Creo que es posible también configurando el apache en la hoja de httpd.conf, pero te recomiendo que, aunque tengas acceso a ella, NO la toques, por si las moscas...
En cuanto a tu consulta es sencilla.

Te pongo un ejemplo:
Quieres redireccionar una página llamada equis.html a otra llamada nueva.php
Buscas la hoja .htacces, si no, la escribes con el mismo bloc de notas.
Luego pones lo siguiente:

Options +Indexes
RewriteEngine On
RewriteBase /
#Con estas líneas de arriba activas el "motor de redireccionamiento" dentro del servidor apache
RewriteRule ^equis.html$ nueva.php
#la línea de arriba es la "regla" (puedes tener varias) que indica que cualquier pág que #comienze por "equis" y acabe por "html" sea redireccionada a "nueva.php"

Este ejemplo es MUY básico, puedes obtener las variables "queryString" de tu consulta php y redireccionarlas según convenga con algo así como : $1&%{QUERY_STRING}, luego, usas el símbolo $ para extraer cada una de las variables. NO es difícil si conoces algo sobre expresiones regulares. Pero resulta algo tedioso hacer que funcione tal y como quieres.

No sé si se permiten poner links a otras páginas así que busca en google "rewriteRule", y verás múltiples ejemplos de uso.
Espero que te haya ayudado. Un saludo!
  #9 (permalink)  
Antiguo 25/09/2013, 11:41
Avatar de MiNick  
Fecha de Ingreso: octubre-2012
Ubicación: Las Palmas de Gran Canaria
Mensajes: 23
Antigüedad: 12 años
Puntos: 3
Respuesta: url amigables +base de datos

Otra cosa que se me olvidó comentarte es que esto es SÓLO para redireccionar a la página que creas, pero esa página HA DE EXISTIR. La que es "amigable" es la primera, en el ejemplo que te puse "equis.html". La otra, "nueva.php" ha de existir; luego puedes extraer las variables queryString para que php las redireccione según convenga.

En general, usar el api.history de html5 es la opción más adecuada, y, si el navegador NO soporta esta característica de navegación, pero sí #haschange, busca window.History, que te permite "conjugar" ambas características; es decir, usar html5 si está disponible, y, cuando no #hashchange (ie8 y 9)

Sé que resulta engorroso, pero con algo de práctica verás que es más "palabrerío" que complicado.
Un saludo y suerte!
  #10 (permalink)  
Antiguo 29/09/2013, 02:58
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

MiNick, muchísimas gracias por tu ayuda. Lo haré con vuestra solución!
  #11 (permalink)  
Antiguo 29/09/2013, 16:00
Avatar de MiNick  
Fecha de Ingreso: octubre-2012
Ubicación: Las Palmas de Gran Canaria
Mensajes: 23
Antigüedad: 12 años
Puntos: 3
Respuesta: url amigables +base de datos

Para eso estamos amigo

Si necesitas más ayuda con tus queryString (o sea, las variables de URL que quieres "capturar" desde php y transformalrlas en otras más "entendibles o bonitas" para el usuaario), NO DUDES EN PREGUNTAR.
No es difícil, en serio, sólo hay que saber la diferencia entre lo que significa "capturar" las variables que deseas y redireccionar, que NO es lo mismo.

De hecho, yo las capturo desde js y no desde php porque ie8 no admite window.History (html5) sino hashChange (html4), y éste usa el carácter (#), que es un carácter reservado de apache para "comentar" alguna línea; así que, NO necesitas capturar las variables sino decirle al motor rewriteRule que admita ciertas directrices (reglas) y que ya tú "te las ingenias" para redireccionar según convenga.

Si no quieres hacerlo compatible con ie8 ni 9, sino con navegadores html5 la opción es bastante más sencilla ya que con $1&%{QUERY_STRING} obtienes cada una de las variables GET o de URL. Pero ya digo que puedes hacer que, por ejemplo, entienda por "simple" js que www.tudominio.com/manolo es igual a www.tudominio.com/index.php?id=1. Eso sí, al cargar la página php debes de pasarle las variables a js con un "onload" y "serializarlas" para que js las interprete.

RESUMIENDO: Lo realmente importante es que le digas al motor de apache que te permita que ciertas urls sean aceptadas, y luego las interpretas aunque sea con window.history.location de js. Eso sí, necesitas saber algo de AJAX para poder crear el "efecto deseado" y que puedas realizar una consulta a php en base a la url mostrada.

Espero no haberte liado, me alegro de que te haya servido como comienzo y si tienes dudas, comenta.
Salu2
  #12 (permalink)  
Antiguo 03/10/2013, 06:54
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

esto úlitmo que me pones me lo tengo que "dijerir"

Muchísimas gracias otra vez!
  #13 (permalink)  
Antiguo 03/10/2013, 07:03
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: url amigables +base de datos

Yo me centraría en hacerlo mediante Apache simplemente y no depender de si el usuario tiene o no JavaScript activado.
  #14 (permalink)  
Antiguo 16/10/2013, 14:50
Avatar de AndresBellado  
Fecha de Ingreso: octubre-2013
Ubicación: Sevilla
Mensajes: 21
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: url amigables +base de datos

Para las urls amigables te sugiero que leas este artículo: http://www.emenia.es/como-crear-urls-amigables-con-htaccess/
  #15 (permalink)  
Antiguo 19/10/2013, 00:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: url amigables +base de datos

Leído...muchas Gracias!!

Etiquetas: amigables, url
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:39.