GNU/Linux >> Linux Esercitazione >  >> Linux

Non riesco a capire una regola htaccess

Tutto ciò che fa questa regola è aggiungere un / finale ai tuoi URL se non ce n'è nessuno e se non c'è . nell'URI, quindi https://example.org/test verrà reindirizzato a https://example.org/test/ , ma https://example.org/test.html non verrà riscritto in https://example.org/test.html/ (ma nota:https://example.org/test.case/folder anche non essere reindirizzato a https://example.org/test.case/folder/ in quanto contiene un . nell'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]

Senza convalidare, ma usando la mia esperienza nella riscrittura di Apache, questa configurazione sembra:

  1. Fai corrispondere la parte "percorso" dell'URI (non i parametri del server, della porta o della query), ad esempio "/mia/posizione/file.html".
  2. Corrisponde se questa parte non termina con un carattere '/' (barra), -oppure- non include un '.' carattere (punto).
  3. Utilizza la parte completa del percorso dell'URI e aggiungi una barra.
  4. Invia un reindirizzamento HTTP 301 (permanente) per indirizzare il browser a questo nuovo URI.

Ciò comporterà i seguenti casi di test

/ -> / /test -> /test/ /my/resource -> /my/resource/ /my/resource.type -> /my/resource.type /edge.case/resource -> /edge.case/resource

Quindi penso che la regola abbia lo scopo di aggiungere barre a risorse che non sembrano essere un file, ma sembra avere un caso limite.

Se non si aggiunge una barra a una risorsa con '.' (punto) carattere nella parte non file del percorso l'espressione regolare deve essere modificata in:

# 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. Capire il numero della porta di ascolto di Rsyslog?

  2. Non riesci a installare Wine su Ubuntu Studio 19.10?

  3. Come reindirizzare da http a https usando .htaccess?

  4. Come posso controllare il conteggio dei colpi per ogni regola in iptables?

  5. Come posso scoprire se un sistema Linux utilizza Wayland o X11?

Come posso scoprire il tipo MIME di un file (Content-Type)?

Come posso eseguire un `git pull` senza reinserire la mia password SSH?

Come faccio a capire quale /dev è un'unità flash USB?

Come faccio a capire perché il servizio systemctl systemd-modules-load non riesce?

È possibile eseguire il paging di initramfs per scambiare il disco?

Come posso scoprire perché il mio php5-fpm non è riuscito ad avviarsi?