Foros del Web » Programando para Internet » PHP »

Duda sobre url amigables

Estas en el tema de Duda sobre url amigables en el foro de PHP en Foros del Web. Hola Gente, Estoy teniendo problemas con el tema de las URL amigables... Básicamente el tema es así: Voy a tener un directorio llamado "modulos" donde ...
  #1 (permalink)  
Antiguo 30/06/2012, 01:27
 
Fecha de Ingreso: marzo-2010
Ubicación: Rosario
Mensajes: 20
Antigüedad: 9 años, 7 meses
Puntos: 2
Pregunta Duda sobre url amigables

Hola Gente,

Estoy teniendo problemas con el tema de las URL amigables...

Básicamente el tema es así:

Voy a tener un directorio llamado "modulos" donde voy a poner todos los módulos como pueden ser "admin"; "catalogo"; "clientes"; etc.

Estos van a tener dentro un index.php que voy a usar como contralodor para manejar las URL mediante $_GET, así de ahí derivo a donde corresponda.

El problema lo tengo cuando genero las URL.

Yo quiero tener la siguiente URL:

www.dominio/admin/5

y esto me tendria que devolver para que pueda usar lo siguiente:

www.dominio/modulos/admin/index.php?id=5

Lo estoy haciendo con el archivo .htaccess, que creo que es lo correcto. ¿no?

Pero no me funciona he probado de las siguientes maneras.

RewriteRule ^(.+)/(.+) modulos/$1/index.php?id=$2
RewriteRule ^/(.+)/(.+) modulos/$1/index.php?id=$2

Pero no hay caso, algo estoy haciendo mal ahí y no logro identificar que.

tampoco funciona si hago así:

RewriteRule ^/(.+) modulos/$1/index.php?id=2
RewriteRule ^(.+) modulos/$1/index.php?id=2

Le hardcodeo el ID y le paso un solo parametro, pero tampoco hace nada.

he probado con (.+); (.*) y ([A-Za-z0-9-]+) y ([A-Za-z0-9-]+)/?


¿Alguien sabría decirme la forma correcta?

Desde ya muchas Gracias!

Saludos!

Andrés.

Última edición por force20; 30/06/2012 a las 01:57
  #2 (permalink)  
Antiguo 30/06/2012, 08:33
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 13 años, 6 meses
Puntos: 58
Respuesta: Duda sobre url amigables

prueba así...
Código Apache:
Ver original
  1. RewriteRule ^modulos/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?id=$2
  #3 (permalink)  
Antiguo 30/06/2012, 15:18
 
Fecha de Ingreso: marzo-2010
Ubicación: Rosario
Mensajes: 20
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Duda sobre url amigables

Hola Jossss,

Muchas Gracias por responder y por tu ayuda :)

De la manera que me dices, me estaría mostrando en la URL el directorio "modulos", que es justo lo que quiero evitar.

la idea es pasar de esta URL que tengo actualmente:

www.dominio/modulos/admin/index.php?id=5

a esta otra:
www.dominio/admin/5

Escondiendo el directorio modulos y el index.php para el usuario.

En otras palabras, quiero que cuando se ponga en el navegador www.dominio/admin/ reedireccione directamente a www.dominio/modulos/admin/index.php
y si se pone www.dominio/admin/5 reedireccione a www.dominio/modulos/admin/index.php?id=5.

Tener en cuenta que "admin" puede ser también algún otro modulo dentro del directorio modulos, por lo que sería una variable.


Muchas Gracias Y Saludos.

Andrés
  #4 (permalink)  
Antiguo 01/07/2012, 10:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 13 años, 6 meses
Puntos: 58
Respuesta: Duda sobre url amigables

Ah vale! no lo había entendido pero lo tienes facil no? yo creo que así debería funcionar...

Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ modulos/$1/index.php?id=$2
  #5 (permalink)  
Antiguo 01/07/2012, 20:04
 
Fecha de Ingreso: marzo-2010
Ubicación: Rosario
Mensajes: 20
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Duda sobre url amigables

Cita:
Iniciado por jossss Ver Mensaje
Ah vale! no lo había entendido pero lo tienes facil no? yo creo que así debería funcionar...

Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ modulos/$1/index.php?id=$2
Funcionaaaa Son un genio Jossss

El problema mio era que lo estaba poniendo mal por lo que vi, usaba esta expresión:
([A-Za-z0-9-]+)

Muchísimas Gracias :) la verdad que me has sacado de un apuro que me ha roto la cabeza desde hace casi 3 días ya !!!!

Supongo que si en vez de poner la dirección www.midominio.com/admin/5
ponen www.midominio.com/admin

debería de poner el siguiente código antes que el que me pasaste vos.

Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)$ modulos/$1/index.php

o a lo sumo pasarle como ID un 0 para manejar mejor en el controler, ya lo vere y lo probare


Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)$ modulos/$1/index.php?id=0

Mil gracias nuevamente :)

Saludos.
  #6 (permalink)  
Antiguo 01/07/2012, 20:22
 
Fecha de Ingreso: marzo-2010
Ubicación: Rosario
Mensajes: 20
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Duda sobre url amigables

Uff, ahora me surgió otro problema y muy raro...
Si pengo esta url: www.midominio.com/admin/
me va bien con este codigo:

Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)/?$ modulos/$1/__init__.php

Ahora si lo pongo sin al barra a lo ultimo no! www.midominio.com/admin
Probé sacandole la barra a la regla pero no funciono tampoco.

Código Apache:
Ver original
  1. RewriteRule ^([a-zA-Z0-9_-]+)?$ modulos/$1/__init__.php

Es muy raro...
  #7 (permalink)  
Antiguo 02/07/2012, 06:13
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 9 años, 1 mes
Puntos: 1
Respuesta: Duda sobre url amigables

Yo creo que la mejor solución a las urls es usar:

miweb.com/index.php/home
miweb.com/index.php/blog
miweb.com/index.php/blog/julio
miweb.com/index.php/blog/julio/mi-articulo

y luego con .htacces haces que todo tenga que pasar por index.php, de manera que la gente no lo tenga que escribir y de esta forma tambien lo puedes quitar de la url. Quedando:

miweb.com/home

Desde index defines el Routing, con php sin necesidad de expresiones regulares.

Saludos
  #8 (permalink)  
Antiguo 02/07/2012, 17:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Rosario
Mensajes: 20
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Duda sobre url amigables

Cita:
Iniciado por helmz Ver Mensaje
Yo creo que la mejor solución a las urls es usar:

miweb.com/index.php/home
miweb.com/index.php/blog
miweb.com/index.php/blog/julio
miweb.com/index.php/blog/julio/mi-articulo

y luego con .htacces haces que todo tenga que pasar por index.php, de manera que la gente no lo tenga que escribir y de esta forma tambien lo puedes quitar de la url. Quedando:

miweb.com/home

Desde index defines el Routing, con php sin necesidad de expresiones regulares.

Saludos
Hola Helmz,
Muchas Gracias por responder y ayudar :)

Gran parte de la idea es lo que dices, pero, lo que no quiero es que se tenga que escribir el index.php en la Url.

ejemplo:

miweb.com/home
miweb.com/blog
miweb.com/blog/julio
miweb.com/blog/julio/mi-articulo

los ultimos 2 casos ya lo tengo... El tema son los dos primeros que no logro hacer la regla correcta, ya que solo pude hacerla poniendo la barra a lo ultimo.
o sea asi: miweb.com/home/
pero así no: miweb.com/home

y en teoría es mas cómodo y lógico que se escriba sin la barra a lo ultimo.

No se si me explique bien...
Se me esta haciendo muy difícil encontrar la forma!

Muchas Gracias.
Saludos.

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 00:40.