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:
- Passen Sie den 'Pfad'-Teil des URI an (nicht die Server-, Port- oder Abfrageparameter), zum Beispiel '/my/location/file.html'.
- Übereinstimmung, wenn dieser Teil nicht mit einem '/' (Schrägstrich) endet oder -oder- kein '.' enthält. (Punkt) Zeichen.
- Verwenden Sie den vollständigen Pfadteil des URI und hängen Sie einen Schrägstrich daran an.
- 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]