mod_rewrite, eliminación de barra diagonal y directorio actual

He leído detenidamente las preguntas relacionadas, pero no puedo entender esta pequeña advertencia. La dorado regla que he visto tirada para eliminar la barra diagonal a través de mod_rewrite es:

RewriteRule ^(.*)/$ /$1 [R,L].

Todo esto está muy bien, pero elimina la estructura de directorio anterior dado que existe. Entonces, si el programa de arranque de mi aplicación se está ejecutando en la raíz de la ruta alojada, funciona, pero no si está en un subdirectorio:

http://localhost/path/to/application/pretty/query/string/

Se convierte en

http://localhost/pretty/query/string (Nota; la barra se elimina, pero también lo es el directorio)

¿Cómo puedo conservar la ubicación del directorio actual, por lo que el ejemplo anterior devuelve lo esperado:

http://localhost/path/to/application/pretty/query/string


Noticias

En última instancia, esto es por coherencia; ya sea añadiendo or eliminar una barra inclinada final es una opción adecuada. Estoy trabajando de ida y vuelta entre intentar que cualquiera de los enfoques funcione, sin éxito.

¡Las respuestas que agregan o eliminan la barra inclinada final son aceptables!

preguntado el 16 de mayo de 11 a las 17:05

1 Respuestas

Bueno, lo resolví para agregar:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /_dev/_projects/mf_frame

RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) ?routePath=$1 [L,QSA]

Me estaba perdiendo el RewriteBase directiva. Tendré otra oportunidad y me desnudaré. No dude en sugerir alternativas a mi enfoque si hay algo que se pueda hacer mejor.

contestado el 16 de mayo de 11 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.