.htaccess разрешает доступ к файлам только из

У меня есть разные подпапки на моем веб-сайте, и я хотел бы, чтобы у пользователя не было доступа к ним через URL-адрес, но в то же время мои основные файлы PHP могли включать их или использовать в качестве действий над формами или ссылками.

Я пробовал использовать .htaccess с

<Files *> Order Allow,Deny Deny from All </Files> 

но он отказал в доступе даже из моих собственных сценариев. Логично, как я узнал, но я не знаю, как заставить его работать. Есть идеи?

PS Моя основная проблема заключается в том, что некоторые из файлов не включены в основные файлы PHP, но они связаны там, и их код заканчивается header('Location: ../index.php'); возвращаясь на главную страницу проекта.

Solutions Collecting From Web of ".htaccess разрешает доступ к файлам только из"

Я вижу много ответов с помощью Разрешить, Запретить Запретить, Разрешить

Порядок этого имеет значение и вызывает проблему. Вы говорите компьютеру, что отрицание важнее, чем разрешить, потому что оно указано последним. Чтобы показать вам … если вы скажете:

 <Files .htaccess> Order Allow,Deny Deny From All Allow From xxx.xxx.xxx.xxx 127.0.0.1 </Files> 

Вы говорите сначала «Разрешить кому угодно», затем «Запретить все» … Что все еще отрицает ВСЕ.

Если вы измените значение на «Запретить», разрешите вам говорить «Запретить все», а затем «Разрешить кому угодно».

 <Files .htaccess> Order Deny,Allow Deny From All Allow From xxx.xxx.xxx.xxx 127.0.0.1 </Files> 

Разрешить команду, будучи более важной, потому что она является последней командой, поэтому позволяет использовать перечисленные после команды «Разрешить».

xxx.xxx.xxx.xxx = Ваш IP-адрес

Сделай это:

 <Files *> Order Deny,Allow Allow from 192.168.100.123 127.0.0.1 Deny from all </Files> 

Список IP-адресов будет определенными вами хостами, такими как localhost.

Это также работает с директивой, а не только с файлом, если вы хотите заблокировать только определенные каталоги.

Существует еще более безопасный метод. Храните ваши включенные файлы под доступными в Интернете папками. Итак, если ваши веб-файлы здесь …

/var/www/mysite.com/

Сохраните ваши включенные файлы здесь:

/ Var / включает /

Затем включите их с полным путем …

 include '/var/includes/myincludes.inc.php'; 

Из Интернета файл myincludes.inc.php полностью недоступен.

Обычно для защиты этих логических файлов от открытого доступа вы можете

  1. поместите его в защищенный каталог, выше htdocs
  2. добавьте проверку для общедоступной константы .. if(!is_defined(some_root_const)){die();}
  3. изменить расширение на .inc или что-то .. и отрицать с .htaccess на основе этого

введите код приложения вне общедоступной html-папки. то вы можете добавить путь включения вверху ваших сценариев, чтобы ваш скрипт мог получить к ним доступ, как если бы они были в одной папке.

http://php.net/manual/en/function.set-include-path.php

В вас .htaccess вам нужно будет указать, какие IP-адреса, хосты вы хотите разрешить, и вы можете сделать это для каждого каталога. например,

 <Directory /dir/to/block> Order Allow,Deny Allow from 192.168.0.1 4.4.4.4 Deny from All </Directory> <Directory /dir/to/allow> Order Allow, Deny Allow from All </Directory>