#php #.htaccess #indexing
#php #.htaccess #индексирование
Вопрос:
Вот мой .htaccess
<Files *>
Order Deny,Allow
Deny from all
</Files>
<Files index.php>
Order Deny,Allow
Allow from all
</Files>
Это не работает, потому что, если я введу имя хоста в своем браузере, он будет обслуживать index.php но apache, похоже, не применяет инструкции к файлам и вместо этого возвращает страницу запрещенного доступа к файлам, мне нужно ввести полное имя документа (например, ‘index.php ‘), чтобы заставить его работать. что не очень удобно…
как поступить, если я хочу, чтобы пользователи получали доступ только к индексным файлам каждой папки на моем сайте? все остальные файлы — это просто включения скриптов, поэтому я считаю, что я правильно делаю, пытаясь сделать их недоступными из Интернета (или, может быть, нет, если только у вас есть одна причина доказать другой случай).
Независимо от вопроса выше, это правильный способ выполнить работу? (Я думаю, что две директивы здесь не аккуратны, но это единственный способ, ну, почти единственный известный мне способ избежать доступа к файлам).
Комментарии:
1. Вы знаете, зачем беспокоиться об этом, когда все, что вам нужно сделать, это просто удалить все ваши файлы за пределами папки htdocs / www, кроме index.php ?
2. Если вы не хотите, чтобы что-то было доступно, не помещайте это в webroot. Гораздо проще переместить их в другое место, чем пытаться принудить Apache обслуживать только НЕКОТОРЫЕ файлы.
3. @MarcB итак, если я вас слышу, ребята, мой webroot будет только одним файлом .htaccess, использующим mod_rewrite для загрузки внешнего содержимого? это не очень простая задача для веб-разработки.
4. У вас все равно будет ваш index.php . Но если вы не хотите, чтобы эти другие файлы типа «include» были доступны, тогда не размещайте их в webroot.
Ответ №1:
Не совсем уверен, зачем вам это нужно, но вы можете использовать mod_setenvif
(не нужно оборачивать это внутри a <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.
Ответ №2:
<Files *?>
Order deny,allow
Deny from all
</Files>
Вам просто нужно добавить знак вопроса, чтобы соответствовать хотя бы одному символу.