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

mod_rewrite: Redireccionar urls sin slash al final

Estas en el tema de mod_rewrite: Redireccionar urls sin slash al final en el foro de Apache en Foros del Web. Buenas, Ya llevo un buen rato intentando crear una regla para redireccionar cualquier url que no contenga slash al final a su correspondiente con slash. ...
  #1 (permalink)  
Antiguo 24/08/2008, 20:14
Avatar de Wind  
Fecha de Ingreso: junio-2008
Ubicación: Oficinas de Pulsem
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
mod_rewrite: Redireccionar urls sin slash al final

Buenas,

Ya llevo un buen rato intentando crear una regla para redireccionar cualquier url que no contenga slash al final a su correspondiente con slash.

Tengo unas reglas muy sencillas pero aparentemente la condición no me está funcionando. He aquí mi código en el .htaccess.
Caso 1.
Código:
RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !.*index.*
RewriteRule ^([^/]+)/([^/]+)$ index.php?s=$1&slug=$2 [NC,L]
RewriteRule ^([^/]+)$ index.php?s=$1 [NC,L]

RewriteRule ^([^/]+)/([^/]+)/$ index.php?s=$1&slug=$2 [NC,L]
RewriteRule ^([^/]+)/$ index.php?s=$1 [NC,L]
Funciona de forma que cualquier url sea redirigida a un archivo central (index.php)

Esta ha sido una opción. Ya que por ahora sólo manejo 2 reglas, he colocado otras 2 reglas para manejar aquellos casos donde no tengan slash al final. Sin embargo, al redirigirme a index.php este al no tiener slash al final, provoca redundancia. Así, he colocado la condición para que se detenga cuando se trate del archivo index.php... pero no me está funcionando ya que me vuelve a redirigir (aunque lo extraño es que solo una vez) a index.php?s=index.php

Lo más cerca quye he estado de la solución ha sido con:
Caso 2.
Código:
RewriteEngine On
RewriteBase /

RewriteRule ^(.+)^/$ $1/ 
RewriteRule ^([^/]+)/([^/]+)/$ index.php?s=$1&slug=$2 [NC,L]
RewriteRule ^([^/]+)/$ index.php?s=$1 [NC,L]
Esta aparentemente debe funcionar para cualquier caso, pero solo me redirige correctamente a la url con slash para el primer nivel, es decir si escribo:

http://nwsnake.exofire.net/blog/ redirige a -> http://nwsnake.exofire.net/index.php?s=blog

http://nwsnake.exofire.net/blog redirige a -> http://nwsnake.exofire.net/blog/ redirige a -> http://nwsnake.exofire.net/index.php?s=blog

http://nwsnake.exofire.net/blog/ejemplo/ redirige a -> http://nwsnake.exofire.net/index.php?s=blog&slug=ejemplo

pero

http://nwsnake.exofire.net/blog/ejemplo redirige a -> ERROR 404


Qué error estoy cometiendo en la condición en el primer caso?? Porque no se aplica la regla en los subniveles en el segundo caso?? O mejor aún, existe alguna regla definitiva para redireccionar cualquier URL (sin importar la profundidad) sin slash a su correspondiente con slash?

Gracias por adelantado!
  #2 (permalink)  
Antiguo 18/12/2008, 23:17
Avatar de ajalex  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta Respuesta: mod_rewrite: Redireccionar urls sin slash al final

hola yo tengo el mismo problema!!

alguien que nos ayude please :(


Saludos!!
Gracias!!
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 14:53.