@veryaskinan
веб-программист

Как запретить доступ к проекту но разрешить доступ к папке в htaccess?

Есть проект для которого в .htaccess прописано следующее:

Order Deny,Allow
Deny from all
Allow from **.**.**.**
Allow from **.**.**.**
Allow from **.**.**.**
Allow from **.**.**.**
Allow from **.**.**.**
Allow from **.**.**.**


В этом проекте есть папка третьего уровня, для которой я хочу открыть доступ всем.
В этой папке в .htaccess пишу:

Allow from all

Если в файле index.php, который лежит в этой папке написан простой код (echo '123';) то все хорошо и он открывается c левых IP

Но если файл подключает в себе через require() другие файлы в самых разных папках проекта то он не открывается с левых IP.

Правильно я понимаю чтобы открыть такой файл нужно чтобы в .htaccess были открыты доступы ко всем подключаемым файлам тоже по отдельности ?

Но ведь я не хочу чтобы у всех пользователей был прямой доступ к этим файлам, хочу только чтобы можно было запускать файл index.php который подключит все остальные нужные и выдаст результат.

есть какое нибудь решение?
  • Вопрос задан
  • 602 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ioannes
По идее, проблем нет, вот мой стенд:

find ./test/
./test/
./test/z.php
./test/.htaccess
./test/test
./test/test/z.php
./test/test/.htaccess

$ cat test/z.php
<?php echo "required<br />\n" ;?>

$ cat test/.htaccess
Deny from all

$ cat test/test/z.php
<?php require("../z.php") ;?>
<?php echo "main<br />\n" ;?>

$ cat test/test/.htaccess
Allow from all

$ wget https://my.site/test/z.php
HTTP-запрос отправлен. Ожидание ответа... 403 Forbidden
2017-02-07 16:18:30 ОШИБКА 403: Forbidden.

$ wget https://my.site/test/test/z.php -O -
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 27 [text/html]
Сохранение в: «STDOUT»

equired<br />
main<br />


Доступ к напрямую к подключаемому файлу запрещен, но по require() он доступен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы