私のhtaccessにこれがありますが、その目的がわかりません。ルールの性質上、検索も役に立ちません。
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301]
誰もがそれについて何を説明できますか?
このルールで行うことは、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
もURIにhttps://example.org/test.case/folder/
が含まれているため、.
にリダイレクトされません)。
## 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]