Я использую CodeIgniter и добавил некоторые правила в .htaccess для перенаправления всех запросов в index.php / a / b в / a / b
Вот эти правила:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Я хочу отключить список каталогов в apache, поэтому я добавил следующее правило:
Options -Indexes
Проблема в том, что, как только я добавил это правило, оно отключает список каталогов, а также перенаправляет любой вызов в определенную папку (которая не содержит индекс. * файл) в контроллер CodeIgniter (который не существует и генерирует ошибку 404).
До: доступ к папке / X возвращает список каталогов
После: доступ к папке / X автоматически вызывает index.php / X и возвращает ошибку 404.
Я хочу, чтобы любой доступ к / X и любой подпапке в нем просто возвращал ошибку 403 (или любую ошибку, которая не связана с запуском сценария php), а не вызывал index.php / X (я хочу, чтобы пользователи иметь возможность доступа к файлам в / X и его подпапках, но не разрешать пользователям видеть список каталогов / X и его подпапок).
Я пытался, но безуспешно:
- добавление
<Directory "/X">
правила. Похоже, я не могу использовать его в моем .htaccess
- добавление правила
RewriteCond $1 !^(X.*|/X.*)
перед RewriteRule ^(.*)$ index.php/$1 [L]
(см. Выше). Это не похоже на работу.
Что мне написать в .htaccess для решения этой проблемы?