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/testserá redirigido ahttps://example.org/test/, perohttps://example.org/test.htmlno se escribe nuevamente ahttps://example.org/test.html/(pero nota:https://example.org/test.case/foldertambién no ser redirigidos ahttps://example.org/test.case/folder/, ya que contiene a.en el URI).fuente
/test.case/foldertampoco 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-urlque 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/resourceAsí 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).