Вот мой .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»), чтобы заставить его работать. что не очень удобно …
как действовать, если я хочу, чтобы пользователи обращались только к индексным файлам каждой папки на моем веб-сайте? все остальные файлы – это просто включения скриптов, поэтому я считаю, что делаю правильно, пытаясь сделать их недоступными из Интернета (а может и нет, если только у вас есть одна причина доказать другой случай).
Независимо от вопроса выше, это правильный способ выполнить эту работу? (Я думаю, что две директивы здесь не опрятные, но это единственный способ, и почти единственный способ, которым я знаю, чтобы избежать доступа к файлам).
Не совсем понятно, зачем вам это нужно, но вы можете использовать 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>
Вам просто нужно добавить знак вопроса для соответствия хотя бы одному символу.