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

ayuda con htaccess

Estas en el tema de ayuda con htaccess en el foro de Apache en Foros del Web. hola amigos... tengo un problema... resulta que tenemos una web de productos... donde se entra a las categorias de la siguiente manera. index.php?categoria=1, entonces... lo ...
  #1 (permalink)  
Antiguo 27/04/2009, 17:17
 
Fecha de Ingreso: enero-2008
Mensajes: 115
Antigüedad: 16 años, 3 meses
Puntos: 1
ayuda con htaccess

hola amigos... tengo un problema...

resulta que tenemos una web de productos... donde se entra a las categorias de la siguiente manera.

index.php?categoria=1, entonces... lo que queriamos hacer era ahora poder entrar a:
mi-categoria-1 y que esta apunte a index.php?categoria=1... pero que a la vez en la barra de direccion del browser si uno ponia index.php?categoria=1 esto se cambie automaticamente por mi-categoria-1, osea que incluso se haga la redireccion total... en fin... lo más sencillo de todo:
Código:
RewriteRule ^mi-categoria-([0-9]+)$ index.php?content=$1
esto funciona sin problemas...

luego por otro lado comenzamos a probar lo otro que salio con esto
Código:
RewriteCond %{QUERY_STRING} ^categoria=([0-9]+)$
RewriteRule ^index.php$ \/url\/mi-categoria-%1? [R=302]
tambien funciono... apenas yo ponia la url con variables... lo redireccionaba a la url amigable...

pero... al juntar ambas cosas... produjo un error... y es xq todo se vuelve un ciclo... y nunca se termina de ejecutar...

hay alguna manera de hacer que apenas encuentre una condicion... detenga todo el resto ?????

la finalidad de hacer esto era para no tener que modificar toda la web y cambiar todos los links... sino hacerlo todo con el htaccess...

espero que puedan ayudarme
gracias.
  #2 (permalink)  
Antiguo 27/04/2009, 17:31
 
Fecha de Ingreso: enero-2008
Mensajes: 115
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: ayuda con htaccess

hola, perdón por el doble post...
he intentado usando [L] y nada... tampoco funciona... sigue el error en mozilla sale:
"Firefox ha detectado que el servidor está redirigiendo la solicitud a esta dirección de una manera en la que nunca terminará."

si hubiera alguna manera de detener todas las demas reglas despues de la regla que ha coincidido podría funcionar... pero no encuentro nada...
  #3 (permalink)  
Antiguo 27/04/2009, 18:07
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: ayuda con htaccess

No es posible, debido al funcionamiento del mod_rewrite.
Te explico:

Cuando encuentra una regla, si esta incluye el flag "L", termina de hacer comparaciones.
Sin embargo, internamente genera una nueva petición, con la nueva dirección(la reescrita), y es evaluada contra las reglas de nuevo.

Es decir...

· mi-categoria-1 es transformada a index.php?categoria=1
· se genera una nueva petición "interna"
· index.php?categoria=1 coincide con tus reglas, y es reescrita a mi-categoria-1
· se genera una nueva petición, con la dirección mi-categoria-1, y vuelta a empezar.

En el caso de tu ejemplo el comportamiento es similar.

Si la dirección que usan es mi-categoria-1, se reescribe internamente a index.php?categoria=1, luego es reevaluada, y se le manda al usuario la redirección 302... y vuelta a empezar.

Hay una solución sin embargo. Y es hacer una de las dos redirecciones mediante PHP.
Otra posibilidad es comparar el REFERRER, si es de la misma categoria pero en la forma inversa ignorarlo... sin embargo los navegadores que lo traigan desactivado entrarían en el bucle igual.
Aunque no sé si funcionaría esta última... no he probado.

Última edición por LoveMeNot; 27/04/2009 a las 18:12
  #4 (permalink)  
Antiguo 28/04/2009, 11:40
 
Fecha de Ingreso: enero-2008
Mensajes: 115
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: ayuda con htaccess

Hola amigo, gracias... tienes razón... no se podía... aunque hice otra cosa..
esto:
Código:
RewriteRule ^mi-categoria-([0-9]+)$ index.php?content=$1
lo cambie por:
Código:
RewriteRule ^mi-categoria-([0-9]+)$ index.php/content=$1
luego hice una funcion en PHP que recoja todo despues del "/" con explode... y que haga otro explode del "=" y todo eso lo convierta en variables de tipo $_GET y funcionó :)

ahora tengo otro dilema.

teniamos una web "www.dominio.com"
donde las imagenes estaban en
www.dominio.com/images

pero ahora todo apunta a www.dominio.com/www/ (no sabemos porque... pero mientras queremos dar una solucion)
osea ahora las imagenes estan en www.dominio.com/www/images/ y las webs ya no muestran imagenes y hay un problema con eso...

que regla podría usar para que todas las peticiones de imagenes la mande a un subdirectorio...

es decir
que todo lo que sea JPG|GIF|PNG|BMP lo mande a "www/"
ojo que podria ser una peticion asi:
carpeta1/carpeta2/images/image1.jpg
y deberia quedar como
www/carpeta1/carpeta2/images/image1.jpg

no sé si sea posible algo de eso...
en fin
gracias amigo

Última edición por turbex; 28/04/2009 a las 11:59
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:08.