Foros del Web » Administración de Sistemas » Apache »

htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.com/carlos"

Estas en el tema de htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.com/carlos" en el foro de Apache en Foros del Web. Buenas noches, Ya llevo 3 dias leyendo com hacer este trabajo, pero no consigo nunguna respuesta, será que es un tabu ?. Encuentro como transformar ...
  #1 (permalink)  
Antiguo 23/03/2010, 19:00
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.com/carlos"

Buenas noches,

Ya llevo 3 dias leyendo com hacer este trabajo, pero no consigo nunguna respuesta, será que es un tabu ?. Encuentro como transformar URL a varios niveles de la raiz, como por ejemplo a esto:
"www.url.com/users/userinfo/carlos" o "www.url.com/users/carlos"
Pero lo que necesito es que me quede como esto
"www.url.com/carlos" osea que el URL amigable este en el primer nivel despues del root.
Yo he conseguido algo usando esto:

Código HTML:
RewriteRule ^(.+)/$ users/userinfo.php?user=$1 [L]
en donde me funciona bien colocando este URL "www.url.com/carlos/" pero cuando coloco "www.url.com/carlos" (sin el / al final de la direccion) no me reconoce el URL, he tratado de poner las dos formas
Código HTML:
RewriteRule ^(.+)$ users/userinfo.php?user=$1 [L]
RewriteRule ^(.+)/$ users/userinfo.php?user=$1 [L]
pero cuando coloco estas dos formas me manda un problema todo el sitio.
No es posible colocar dos reglas en el htaccess ?

De que manera tendria que ser la regla para obtener la URL amigable en el pimer nivel depues del root (ej. www.url.com/carlos)? () y que me funcione con el / o sin el ?
Y tambien muy importante, que la regla no afecte las otras URL en la misma estructura, por ejemplo www.url.com/ayuda/

Les agradesco cualquier ayuda
Gracias de antemano
  #2 (permalink)  
Antiguo 23/03/2010, 22:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.

Te falta indicar que la última barra es opcional usando el simbolo de ?. Solo necesitas hacerlo así
Código Apache:
Ver original
  1. RewriteRule ^(.+)/?$ users/userinfo.php?user=$1 [L]
Para que no afecte las demás direcciones como por ejemplo el de ayuda solo tienes que usar rewriteCond, para condicionarlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 24/03/2010, 07:04
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.

Gracias abimaelrc por tu respuesta,

he copiado exactamente lo que me dijiste (RewriteRule ^(.+)/?$ users/userinfo.php?user=$1 [L])

Pero cuando trato de abrirlo con el / de esta forma http://www.url.com/carlos/ no me funciona
  #4 (permalink)  
Antiguo 24/03/2010, 08:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.

Trata de esta forma
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteRule ^(.*[^/])/?$ c.php?id=$1 [L,QSA]
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 24/03/2010, 09:52
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.

Gracias, de esta manera me funciona terminandolo en / o no, pero tambien de esta manera el redirect de error 404 no me funciona,

Si coloco esto: http://www.url.com/hghfg no me redirigue a la pagina de page not found the tengo seteada con esto:

ErrorDocument 404 http://www.url.com/pagenotfound/

Alguna idea ?

Esto es lo que tengo seteado en todo el archivo htaccess:

Código Apache:
Ver original
  1. <ifmodule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. #Si la url solicitada no es un fichero(existente), continuar...
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6.  
  7. #Si la url solicitada no es una carpeta(existente), continuar...
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9.  
  10. #se toma todo ese -query_string- y se pasa como parametro route
  11. #RewriteRule ^(.+)/?$ users/userinfo.php?user=$1 [L]
  12. RewriteRule ^(.*[^/])/?$ users/userinfo.php?user=$1 [L,QSA]
  13.  
  14. </ifmodule>
  15.  
  16.  
  17. ErrorDocument 404 http://www.xxxtopporn.com/pagenotfound/
  #6 (permalink)  
Antiguo 09/04/2010, 15:13
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: htaccess - transformar "http://www.url.com/users/userinfo.php?use" a "url.

Gracias Abimaerc por tus respuestas, me ayudaron bastante y esta funcionando bien,
Solamente que me salio otro problemita que he postiado aqui http://www.forosdelweb.com/f57/confl...ctorio-795443/ para ver si lo lees y tienes alguna idea o alguien mas ?

Gracias

Etiquetas: htaccess, transformar
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 20:37.