#apache #.htaccess
#apache #.htaccess
Вопрос:
Как вы можете запретить прямой доступ к файлам в каталоге, к которому я не хочу, чтобы пользователи обращались к нему напрямую, но разрешать доступ к серверу / localhost, потому что каталог, к которому я пытаюсь избежать прямого доступа, содержит HTML-файлы, которые выводятся / анализируются PHP.
Список каталога выглядит следующим образом:
template
|
|
--------> acp
| |
| ------> acp_index.html
| ------> acp_settings.html
|
--------> css
| |
| ------> stylesheet.css
|
--------> js
| |
| ------> scripts.js
|
---> index.html
---> login.html
---> etc...
В template/acp
мне нужно избегать прямого доступа к файлам, но localhost / сервер должен иметь возможность получать к ним доступ и анализировать их.
Ответ №1:
Если я правильно понимаю, вы хотите, чтобы люди не входили template/acp
, в то же время позволяя серверу получать доступ к файлам?
Вы могли бы создать .htaccess
и поместить его в template/acp
, этот файл должен содержать слова deny from all
, и просто так все, кто пытается получить файл, не смогли бы, однако сервер все равно смог бы через. php или другие языки сценариев на стороне сервера…
В php вы можете использовать такие функции, как include() или require(), чтобы включить файл в файл php и даже выполнить php-коды из включенного файла, или прочитать файл с помощью чего-то вроде fread() или file_get_contents()…
Но если вы не используете какие-либо серверные скрипты, вы никак не сможете полностью избежать прямого доступа к файлам, если вам все еще нужно, чтобы пользователи могли видеть их содержимое…
Пожалуйста, обратите внимание, что .htaccess поддерживается не всеми типами веб-серверов. Apachee поддерживает это, в то время как другие, подобные lighttpd, нет.
Ответ №2:
Если вам никогда не нужен прямой доступ к этим файлам, а только синтаксический анализ с PHP, тогда удалите эти файлы из веб-каталога. Если файлы находятся вне веб-каталога (и вы не задаете какой-либо псевдонимный путь в Apache), то нет никакого способа, чтобы кто-то мог получить к ним доступ в один прекрасный день.
PHP не ограничен веб-каталогом, PHP может обращаться к файлам в /tmp, / etc / везде на вашем сервере (и это проблема на самом деле). каждый файл, который может прочитать пользователь и группа apache, может быть прочитан PHP.
Настройка PHp ограничит это, это open_basedir, если эта настройка установлена, то вы можете открыто обращаться к файлам в дереве каталогов каталога, указанного в open_basedir. Поэтому вам, возможно, придется добавить туда каталог вашего шаблона.
Возможно, вам также потребуется изменить параметр include_dir, чтобы добавить место для вашего шаблона и написать более простые инструкции include_once или require_once.