Как известно из документации, когда DirectorySlash
установлено на Off
, запросы на /folder
не оцениваются DirectoryIndex
. Это означает, что запрос не будет автоматически сопоставлен с /folder/index.php
.
mod_dir
выполняет эту проверку на этапе «исправления» обработки запроса. mod_rewrite
, отвечающий за ваши RewriteRule
определения, также выполняет его обработку на этом этапе, когда вы указываете правила в файле .htaccess
.
Однако он был запрограммирован с учетом таких модулей, как mod_dir
, и включает проверку, чтобы убедиться, что текущий каталог был запрошен с косой чертой. В противном случае он отклоняет запрос, поскольку это может привести к неопределенному поведению.
Затем запрос переходит к фазе генерации контента, которая, поскольку запрос не был сопоставлен с реальным файлом, обрабатывается mod_autoindex
. Учитывая, что Indexes
по умолчанию отключены на вашем хосте, mod_autoindex
возвращает 403 Forbidden
, что вы и видите.
Обратите внимание, что, поскольку DirectoryIndex
не оценивается, даже если mod_rewrite
были для обработки запроса, он все равно завершится ошибкой, поскольку не произойдет автоматическое разрешение до index.php
, и ваше правило
RewriteRule . /folder/index.php [L]
не будет соответствовать, потому что .
требует совпадения с чем-то (но запрос будет пустым).
Включение DirectorySlash
предотвращает этот сценарий, исправляя запрещенные действия во всех ранее упомянутых сценариях, кроме последней заметки, о которой заботится тот факт, что DirectoryIndex
сопоставляет запрос с index.php
в любом случае.