Tengo esto en mi htaccess pero no puedo entender para qué sirve. Debido a la naturaleza de la regla, la búsqueda tampoco ayuda.
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301]
¿Alguien puede explicar para qué sirve?
linux
apache-2.2
apache-2.4
.htaccess
mod-rewrite
Richard1984
fuente
fuente
/
y no contiene un ".
", entonces redirija la solicitud agregándola con un/
. La intención probable de esta regla es manejar la indexación automática de directorios.Respuestas:
Toda esta regla hace es añadir un arrastre
/
a sus URL si no hay ninguno, y si no hay.
en el URI, por lo quehttps://example.org/test
será redirigido ahttps://example.org/test/
, perohttps://example.org/test.html
no se escribe nuevamente ahttps://example.org/test.html/
(pero nota:https://example.org/test.case/folder
también no ser redirigidos ahttps://example.org/test.case/folder/
, ya que contiene a.
en el URI).fuente
/test.case/folder
tampoco será redirigido": punto menor, pero si "carpeta" es un directorio del sistema de archivos, mod_dir emitirá (por defecto) una redirección 301 para agregar una barra inclinada final. Solo es un problema si es/test.case/some-other-virtual-url
que debería tener una barra diagonal final.Sin validar, pero usando mi experiencia en la reescritura de Apache, esta configuración parece:
Esto dará como resultado los siguientes casos de prueba
/ -> / /test -> /test/ /my/resource -> /my/resource/ /my/resource.type -> /my/resource.type /edge.case/resource -> /edge.case/resource
Así que creo que la regla tiene el propósito de agregar barras a los recursos que no parecen ser un archivo, pero parece tener un caso límite.
Si no agrega una barra diagonal a un recurso con '.' (punto) en la parte de la ruta que no pertenece al archivo, la expresión regular debe cambiarse a:
fuente
!(\/$|\.[^\/]*)
- Su expresión regular actualizada no es realmente diferente. También necesita un ancla de fin de cadena en la segunda parte (que coincide con la extensión). Tal vez algo como:!(/|\.[a-zA-Z]+)$
(no es necesario escapar de las barras).