Запретить все файлы, кроме индекса, используя apache

Вот мой .htaccess

<Files *> Order Deny,Allow Deny from all </Files> <Files index.php> Order Deny,Allow Allow from all </Files> 

Это не работает, потому что, если я набираю имя хоста в своем браузере, он обслуживает index.php, но apache, похоже, не применяет инструкции Files и вместо этого возвращает страницу с недопустимым доступом к файлу, мне нужно ввести документ с полным именем ( например «index.php»), чтобы заставить его работать. что не очень удобно …

как действовать, если я хочу, чтобы пользователи обращались только к индексным файлам каждой папки на моем веб-сайте? все остальные файлы – это просто включения скриптов, поэтому я считаю, что делаю правильно, пытаясь сделать их недоступными из Интернета (а может и нет, если только у вас есть одна причина доказать другой случай).

Независимо от вопроса выше, это правильный способ выполнить эту работу? (Я думаю, что две директивы здесь не опрятные, но это единственный способ, и почти единственный способ, которым я знаю, чтобы избежать доступа к файлам).

Solutions Collecting From Web of "Запретить все файлы, кроме индекса, используя apache"

Не совсем понятно, зачем вам это нужно, но вы можете использовать mod_setenvif (нет необходимости обертывать это внутри <Files> )

 SetEnvIf Request_URI ^/index.php$ index Order Allow,Deny Allow from env=index 

Это приведет к доступу к hostname.com/ на 403, но разрешит hostname.com/index.php. Если вы хотите разрешить / просто, просто добавьте

 SetEnvIf Request_URI ^/$ index 

наверху. Конечно, все это сделает так, что все ссылки index.php также вернут 403.

 <Files *?> Order deny,allow Deny from all </Files> 

Вам просто нужно добавить знак вопроса для соответствия хотя бы одному символу.