GNU/Linux >> Tutoriales Linux >  >> Linux

No puedo descifrar una regla htaccess

Todo lo que hace esta regla es agregar un final / a su URLS si no hay ninguno y si no hay . en la URI, entonces https://example.org/test será redirigido a https://example.org/test/ , pero https://example.org/test.html no se reescribirá a https://example.org/test.html/ (pero nota:https://example.org/test.case/folder tampoco no ser redirigido a https://example.org/test.case/folder/ ya que contiene un . en la URI).

## Do the following if the URI does not end with `/` or  does not contain an `.`: 
## the . is relevant for file names like test.html, which should n 
RewriteCond %{REQUEST_URI} !(/$|\.)

## Redirect it to the original URI with an added `/` and mark this as permanent:
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

Sin validar, pero usando mi experiencia en la reescritura de Apache, esta configuración parece:

  1. Haga coincidir la parte de la 'ruta' del URI (no el servidor, el puerto o los parámetros de consulta), por ejemplo, '/mi/ubicación/archivo.html'.
  2. Coincide si esta parte no termina en un carácter '/' (barra inclinada), -o- no incluye un '.' (punto) carácter.
  3. Utilice la parte de la ruta completa del URI y añádale una barra diagonal.
  4. Envíe un redireccionamiento HTTP 301 (permanente) para dirigir el navegador a este nuevo URI.

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 límite.

Si no agrega una barra inclinada a un recurso con '.' (punto) en la parte que no es de archivo de la ruta, la expresión regular debe cambiarse a:

# match paths which do not end with a slash, or do not resemble a file with an extension
RewriteCond %{REQUEST_URI} !(/$|\.[^/]+$)
# redirect permanently to the same uri with a slash
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

Linux
  1. ¿No se puede instalar Wine en Ubuntu Studio 19.10?

  2. ¿Cómo puedo averiguar el tipo MIME de un archivo (Content-Type)?

  3. ¿Cómo puedo realizar un `git pull` sin volver a ingresar mi contraseña de SSH?

  4. ¿Cómo puedo verificar el conteo de visitas para cada regla en iptables?

  5. ¿Cómo puedo saber si un sistema Linux usa Wayland o X11?

¿Cómo redirigir http a https usando .htaccess?

Cómo redirigir usando Htaccess:reglas comunes para 301, 302, HTTPS

¿Dónde puedo averiguar dónde se ha instalado un paquete?

¿Cómo averiguo por qué falla el servicio systemctl systemd-modules-load?

¿Se puede paginar initramfs para cambiar el disco?

¿Cómo puedo averiguar qué sistema operativo de servidor está ejecutando un sitio en particular?