Không xác thực, nhưng sử dụng kinh nghiệm của tôi trong việc viết lại Apache, cấu hình này dường như:
- Khớp với phần 'đường dẫn' của URI (không phải thông số máy chủ, cổng hoặc truy vấn), ví dụ '/my/location/file.html'.
- Khớp nếu phần này không kết thúc bằng ký tự '/' (dấu gạch chéo), -hoặc- không bao gồm dấu '.' (chấm) ký tự.
- Sử dụng phần đường dẫn đầy đủ của URI và nối thêm dấu gạch chéo vào nó.
- Gửi chuyển hướng HTTP 301 (vĩnh viễn) để hướng trình duyệt tới URI mới này.
Điều này sẽ dẫn đến các trường hợp thử nghiệm sau đây
/ -> /
/test -> /test/
/my/resource -> /my/resource/
/my/resource.type -> /my/resource.type
/edge.case/resource -> /edge.case/resource
Vì vậy, tôi nghĩ rằng quy tắc này có mục đích thêm dấu gạch chéo vào các tài nguyên dường như không phải là một tệp, nhưng dường như nó có trường hợp cạnh.
Nếu không thêm dấu gạch chéo vào tài nguyên bằng '.' (dấu chấm) ký tự trong phần không phải tệp của đường dẫn biểu thức chính quy nên được thay đổi thành:
# 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]
/
và nó không chứa ".
", thì hãy chuyển hướng yêu cầu bằng cách nối nó với a/
. Mục đích có thể xảy ra của quy tắc này là xử lý lập chỉ mục thư mục tự động.