このルールが行うことは、末尾に /
を追加することだけです 何もない場合と .
がない場合は、URL に URIで、だから https://example.org/test
https://example.org/test/
にリダイレクトされます 、しかし https://example.org/test.html
https://example.org/test.html/
に書き換えられません (ただし、注意:https://example.org/test.case/folder
しない https://example.org/test.case/folder/
にリダイレクトされます .
が含まれているため 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]
検証はしませんが、私の Apache 書き換えの経験を利用すると、この構成は次のように思われます:
<オール>これにより、次のテスト ケースが生成されます
/ -> /
/test -> /test/
/my/resource -> /my/resource/
/my/resource.type -> /my/resource.type
/edge.case/resource -> /edge.case/resource
したがって、この規則には、ファイルではないように見えるリソースにスラッシュを追加する目的があると思いますが、特殊なケースがあるようです.
「.」を使用してリソースにスラッシュを追加しない場合正規表現を変更する必要があるパスのファイル以外の部分の (ドット) 文字:
# 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]