GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann keine htaccess-Regel herausfinden

Diese Regel fügt lediglich ein nachgestelltes / hinzu zu Ihren URLs, wenn es keine gibt und wenn es kein . gibt im URI, also https://example.org/test wird zu https://example.org/test/ umgeleitet , aber https://example.org/test.html wird nicht in https://example.org/test.html/ umgeschrieben (aber Achtung:https://example.org/test.case/folder auch nicht zu https://example.org/test.case/folder/ umgeleitet werden da es einen . enthält im 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]

Ohne zu validieren, aber mit meiner Erfahrung beim Umschreiben von Apache scheint diese Konfiguration:

  1. Passen Sie den 'Pfad'-Teil des URI an (nicht die Server-, Port- oder Abfrageparameter), zum Beispiel '/my/location/file.html'.
  2. Übereinstimmung, wenn dieser Teil nicht mit einem '/' (Schrägstrich) endet oder -oder- kein '.' enthält. (Punkt) Zeichen.
  3. Verwenden Sie den vollständigen Pfadteil des URI und hängen Sie einen Schrägstrich daran an.
  4. Senden Sie eine (permanente) HTTP 301-Umleitung, um den Browser zu diesem neuen URI zu leiten.

Daraus ergeben sich die folgenden Testfälle

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

Ich denke also, dass die Regel einen Zweck hat, Schrägstriche zu Ressourcen hinzuzufügen, die keine Datei zu sein scheinen, aber einen Grenzfall zu haben scheinen.

Wenn Sie einer Ressource keinen Schrägstrich mit '.' (Punkt) Zeichen im Nicht-Dateiteil des Pfads sollte der reguläre Ausdruck geändert werden 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. Kann Wine nicht auf Ubuntu Studio 19.10 installieren?

  2. Wie kann ich mit .htaccess http auf https umleiten?

  3. Wie finde ich den MIME-Typ (Content-Type) einer Datei heraus?

  4. Wie kann ich einen „Git-Pull“ durchführen, ohne mein SSH-Passwort erneut einzugeben?

  5. Wie finde ich heraus, welches /dev ein USB-Flash-Laufwerk ist?

Kann ich aus einer physischen Windows XP-Maschine eine virtuelle Maschine machen?

Wo kann ich herausfinden, wohin ein Paket installiert wurde?

Wie finde ich heraus, warum der systemctl-Dienst systemd-modules-load fehlschlägt?

Kann initramfs auf Auslagerungsdatenträger ausgelagert werden?

NFS-Volume kann nicht bereitgestellt werden - Zeitüberschreitung

Wie kann ich herausfinden, warum mein php5-fpm nicht gestartet werden konnte?