Похоже, /folder
существует в вашем веб-корне. Поскольку вы не отправили Apache URL-адрес, заканчивающийся косой чертой, а запрошенный ресурс является папкой, директива DirectorySlash
принудительно перенаправляет на исправленный URL-адрес.
К сожалению, mod_rewrite
проверяет ваш запрос до того, как произойдет перенаправление, и, хотя он не меняет URI, который используется при создании перенаправления, изменения, которые он вносит в строку запроса, не разделяются в способ, которым mod_dir
знает, не включать их. Поэтому, когда перенаправление отправляется обратно в браузер, оно включает строку запроса, сгенерированную вашим RewriteRule
.
Потенциальное решение этой проблемы (кроме отключения DirectorySlash
, которое не рекомендуется по причинам, перечисленным в документации), состоит в том, чтобы выполнить работу mod_dir
для него как часть вашего набора правил:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTPS}s ^on(s)|off
RewriteRule [^/]$ http%1://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]
RewriteRule ^(.*)$ framework/index.php?framework=$1 [QSA,L]