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

RewriteRule en .htaccess

Estas en el tema de RewriteRule en .htaccess en el foro de Apache en Foros del Web. Hola, tengo una duda con respecto al .htaccess... Estuve buscando en internet y en este foro y no encontré la solución: Tengo en mi .htaccess ...

  #1 (permalink)  
Antiguo 01/12/2010, 10:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
RewriteRule en .htaccess

Hola, tengo una duda con respecto al .htaccess...
Estuve buscando en internet y en este foro y no encontré la solución:

Tengo en mi .htaccess esto:

RewriteRule ^carpeta1/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^carpeta2/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^carpeta3/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^carpeta4/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^carpeta5/fotos/(.*).jpg$ seccion/imagenes/$1.jpg


Funciona perfecto, pero lo quería resumir haciendo:
RewriteRule ^(carpeta1|carpeta2|carpeta3|carpeta4|carpeta5)/fotos/(.*).jpg$ seccion/imagenes/$1.jpg

pero no funcionó, ¿alguien sabe por que?
Desde ya muchas gracias a quien pueda ayudarme
  #2 (permalink)  
Antiguo 01/12/2010, 10:51
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: RewriteRule en .htaccess

Prueba esto :

Código Apache:
Ver original
  1. RewriteRule ^carpeta\d+/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 01/12/2010, 10:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Hola spider_boy,
Desde ya muchas gracias.

Entiendo mas o menos lo que hace la regla que me decís, pero el ejemplo que puse yo de "carpeta1, carpeta2, carpeta3, etc" en verdad no se llaman así los directorios, sino que son palabras.

Hacé de cuenta que en realidad tengo esto:

RewriteRule ^palabra/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^informacion/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^aire/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^vida/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
RewriteRule ^amigos/fotos/(.*).jpg$ seccion/imagenes/$1.jpg


me entiendo ?
  #4 (permalink)  
Antiguo 01/12/2010, 11:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Proba con:

Código Apache:
Ver original
  1. RewriteRule ^(?:carpeta1|carpeta2|carpeta3|carpeta4|carpeta5)/fotos/(.*).jpg$ seccion/imagenes/$1.jpg
o
Código Apache:
Ver original
  1. RewriteRule ^(carpeta1|carpeta2|carpeta3|carpeta4|carpeta5)/fotos/(.*).jpg$ seccion/imagenes/$2.jpg

Salu2
  #5 (permalink)  
Antiguo 01/12/2010, 11:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a Javascript
  #6 (permalink)  
Antiguo 01/12/2010, 12:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Gracias masterpuppet,

Me funcionó haciendola como la segunda opción que dijiste... entiendo ual es la diferencia entre ambas, pero cual sería mas eficiente ?? o son exactament iguales para el servidor ??
  #7 (permalink)  
Antiguo 01/12/2010, 13:13
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Por eficiencia seria la primera, pero no se si apache lo permite.

Salu2.
  #8 (permalink)  
Antiguo 03/12/2010, 08:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Gracias masterpuppet,

Una consulta mas, y que no puedo resolver:
Tengo esto:
RewriteRule ^carpeta/([a-zA-Z]+).php$ carpeta/pagina.php?id=$1

Resulta que una URL puede ser por ejemplo: www.misitio.com/carpeta/bienvenido.htm
y yo quiero que con el htaccess lo interprete de la siguiente forma: www.misitio.com/carpeta/pagina.htm?id=bienvenido

Eso es lo que quiero... pero si en el archivo pagina.php muestro por pantalla la variable enviada por get, me tira: "pagina" ... y no bienvenido.

Sabés donde puede estar el problema ??

Última edición por Jamati; 03/12/2010 a las 11:47
  #9 (permalink)  
Antiguo 03/12/2010, 12:17
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Que tal jamati, puede ser por la extension, le estas diciendo que termina en .php no en .htm

Salu2.
  #10 (permalink)  
Antiguo 03/12/2010, 12:28
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Perdón masterpuppet,

Si yo entro en: www.misitio.com/carpeta/pagina.php?id=bienvenido
igualmente no me reconoce bien.

Me equivoqué al enviarte el link de ejemplo, pero eso no es el error... se te ocure algo ?
  #11 (permalink)  
Antiguo 03/12/2010, 13:00
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Es curioso el "error", proba cambiar ^carpeta/([a-zA-Z]+).php$ por ^carpetas/([a-zA-Z]+).php$,
accede atraves de www.misitio.com/carpetas/bienvenido.php y me contas.
  #12 (permalink)  
Antiguo 03/12/2010, 13:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Hola masterpuppet,

Como decís vos funcionó perfecto... pero no quiero que sea otra carpeta y en verdad la interprete como la original... sino que quiero que el archivo solamente se interprete...

Gracias de todas formas, pero ese error me pone mal
  #13 (permalink)  
Antiguo 03/12/2010, 14:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

sigo probando y la verdad que no lo puedo resolver
  #14 (permalink)  
Antiguo 03/12/2010, 15:59
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Jamati si cambias solamente la extension tambien funciona ^carpeta/([a-zA-Z]+).htm.
  #15 (permalink)  
Antiguo 07/12/2010, 12:55
 
Fecha de Ingreso: octubre-2009
Ubicación: Lima
Mensajes: 31
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: RewriteRule en .htaccess

Tengo problemas con el .htaccess

no funciona la pagina erro en mi localhost :/
  #16 (permalink)  
Antiguo 14/01/2011, 07:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

masterpuppet, perdón por estos días sin respuesta de mi parte, tuve un inconveniente.

Con respecto a este tema, me sigue sin funcionar.
Repito como tengo las cosas

Tengo esto:
RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.htm?file=$1

Resulta que una URL puede ser por ejemplo: www.misitio.com/carpeta/bienvenido.htm
y yo quiero que con el htaccess lo interprete de la siguiente forma: http://www.misitio.com/carpeta/pagin...ile=bienvenido

Pero no hay caso, sin en el archivo "pagina.htm" hago un print de la variable "file" recibida, me tira: pagina
  #17 (permalink)  
Antiguo 14/01/2011, 16:21
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Que tal Jamati, no debería ser ?:

Código Apache:
Ver original
  1. RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.php?file=$1

tal cual te lo muestro arriba, funciona correctamente.

Saludos.
  #18 (permalink)  
Antiguo 17/01/2011, 07:54
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Hola masterpuppet,

Tu recomendación es la misma que puse yo, salvo que vos pusiste la extensión en PHP, pero en realidad mis páginas son extensión HTM (previamente en el .htaccess escondí el lenguaje).

Esto no es el problema, ya que otras reglas parecidas funcionan bien.
Es muy raro el tema, y suponete que lo qe vos decís, lo corrijo asi:

Cita:
RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.htm?file=$1
luego, si en el archivo "pagina.htm" hago un print de la variable "file" recibida, me tira: "pagina" , en lugar de por ejemplo "bienvenido"
  #19 (permalink)  
Antiguo 17/01/2011, 12:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Es raro a mi me funciona ok, es la única regla que tenes en el .htaccess ?
  #20 (permalink)  
Antiguo 18/01/2011, 06:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Perdón, una cosa es la que funciona mal, el resto bien... es decir, me hace el redireccionamiento, pero me toma mal la variable !!

A continuación lo explico:

Hice la prueba eliminando todo del .htaccess, dejando solamente:

Código HTML:
Options +FollowSymlinks
RewriteEngine On
AddType application/x-httpd-php .htm

RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.htm?file=$1

pero sigue sin funcionar.

Por ejemplo, en la página "bienvenido.htm", arriba de todo tengo solamente esto:

Código PHP:
if (isset($_GET['file']))
{
    echo 
$_GET['file'];

Entonces, ingreso a http://www.misitio.com/carpeta/bienvenido.htm , y me imprime: pagina , cuando me tendría que imprimir "bienvenido"
  #21 (permalink)  
Antiguo 18/01/2011, 14:01
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: RewriteRule en .htaccess

Si pero el problema sigue siendo la url, osea no puede(y no se porque) terminar en la misma extensión,

esto no funciona:

Código Apache:
Ver original
  1. RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.htm?file=$1

esto si:

Código Apache:
Ver original
  1. RewriteRule ^carpeta/(.*).html$ carpeta/pagina.htm?file=$1

esto tambien:

Código Apache:
Ver original
  1. RewriteRule ^carpeta/(.*).htm$ carpeta/pagina.php?file=$1
  #22 (permalink)  
Antiguo 18/01/2011, 14:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Que raro !!!
Gracias igualmente masterpuppet,

si se te ocurre algo o averiguás como hacerlo, agradecería mucho si lo podés postear acá.

Muchas gracias...
  #23 (permalink)  
Antiguo 18/01/2011, 18:24
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: RewriteRule en .htaccess

Código Apache:
Ver original
  1. RewriteRule ^carpeta/(.*)\.htm$ carpeta/pagina.htm?file=$1

Prueba eso y nos comentas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #24 (permalink)  
Antiguo 19/01/2011, 07:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Hola spider_boy,

Agregando esa barra como indicás, sigue pasando lo mismo... es decir, si ingreso a http://www.misitio.com/carpeta/bienvenido.htm , me imprime: pagina , cuando me tendría que imprimir "bienvenido".

Sigue ocurriendo lo mismo, no entiendo el motivo.
  #25 (permalink)  
Antiguo 20/01/2011, 07:36
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Ninguna explicación entonces a este problema ??
Si alguien sabe algo por favor que me avise...

Gracias a todos los que participaron y trataron de ayudarme.

Saludos
  #26 (permalink)  
Antiguo 20/01/2011, 07:46
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: RewriteRule en .htaccess

¿Podrías postear el código que usas para transformar tus URLs? El problema ya no me huele a que sea Apache .

Por cierto, ¿probaste la posible solución que te dio masterpuppet anteriormente? Quizá cambiando la extensión de los archivos algo podría pasar.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #27 (permalink)  
Antiguo 20/01/2011, 07:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Esto es lo que tengo en mi htaccess:

Código HTML:
Options +FollowSymlinks
RewriteEngine On

AddType application/x-httpd-php .htm
Options -Indexes

#URL AMIGABLES
#----------------------------
RewriteRule ^consultorios/(.*)\.htm$ consultorios/consultorio.htm?id=$1 [NC,L]

RewriteCond %{REQUEST_URI} \.(jpg|gif|png|bmp)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ archivos/hotlink.png [L]
Nada raro, ni tampoco nada que pueda llegar a molestar... es muy raro
  #28 (permalink)  
Antiguo 20/01/2011, 08:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: RewriteRule en .htaccess

A ver... leyendo un poco más arriba, descubrí esto :

Cita:

Por ejemplo, en la página "bienvenido.htm", arriba de todo tengo solamente esto:

Código PHP:
Ver original
  1. if (isset($_GET['file']))
  2. {
  3.     echo $_GET['file'];
  4. }
Ese código debería estar en pagina.htm, o en este último caso que presentas, debería estar en consultorio.htm. Prueba cambiando el código PHP a consultorio.htm y nos cuentas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #29 (permalink)  
Antiguo 20/01/2011, 08:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: RewriteRule en .htaccess

Ingreso por ejemplo a: http://www.misitio.com/consultorios/bienvenido.htm

Si en la página consultorio.htm coloco el código PHP, me sale "consultorio" , cuando en realidad me tendría que salir "bienvenido" ...

Vos hiciste la prueba en tu máquina, en forma local, y te recupera bien la variable ??
si es así, entonces definitivamente no entiendo el error...
  #30 (permalink)  
Antiguo 20/01/2011, 08:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: RewriteRule en .htaccess

Efectivamente, hice la prueba en mi máquina.

Creé una carpeta llamada consultorios, y dentro creé 2 archivos : bienvenido.htm y consultorio.php.

Probé con consultorio.htm, y al entrar desde bienvenido me imprime "consultorio", cuando debería ser "bienvenido", pero si cambio el nombre a consultorio.php y el rewrite lo cambio a esto :

Código Apache:
Ver original
  1. RewriteRule ^consultorios/(.*)\.htm$ consultorios/consultorio.php?id=$1 [NC,L]

me imprime correctamente la información. Osea, en otras palabras, masterpuppet tenía razón .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: htaccess, rewriterule
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:51.