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:
Funciona de forma que cualquier url sea redirigida a un archivo central (index.php)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]
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:
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:RewriteEngine On RewriteBase / RewriteRule ^(.+)^/$ $1/ RewriteRule ^([^/]+)/([^/]+)/$ index.php?s=$1&slug=$2 [NC,L] RewriteRule ^([^/]+)/$ index.php?s=$1 [NC,L]
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!