Как скрыть конфигурационные файлы от прямого доступа?

Я использую Laravel для веб-приложения. Загрузил все на производство и узнал, что некоторые из файлов могут быть напрямую доступны по url - адресу-например http://example.com/composer.json

Как избежать этого прямого доступа?

9 ответов


вы используете неправильную конфигурацию веб-сервера. Укажите свой веб-сервер public каталог и перезапустите его.

на Apache вы можете использовать эти директивы:

DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">

на nginx и, вы должны изменить эту строку:

root /path_to_laravel_project/public;

после этого все файлы Laravel больше не будут доступны из браузера.


Это неверно. composer.json находится за пределами public каталог и, следовательно, не должен быть доступен. Это означает, что конфигурация VirtualHost неверна.

пожалуйста, убедитесь, что ваш путь к каталогу заканчивается на /public.


укажите веб-сервер в общедоступный каталог в корневой папке проекта

project root folder/public

но если у вас нет общих папок, и вы уже указывает на корневую папку, вы можете запретить доступ, написав следующий код в .

<Files ".env">
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>

В приведенном выше коде, сначала мы отрицаем от всех и разрешаем только от собственного сервера (localhost к серверу), чтобы выполнить, и, следовательно, мы можем защитить его от внешних пользователей.


задайте корень документа как public каталог, поэтому другие файлы не будут доступны напрямую. Ищите его в своем apache/nginx/??? конфигурационный файл.


Это зависит от веб-сервера, на котором вы работаете. С Apache будет .файлы. htaccess, тогда как в nginx будет решаться в конфигурационном файле сервера.


вы можете запретить файлы .htaccess чересчур.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>

С помощью Apache вы можете создавать .файл htaccess в корневом каталоге проекта Laravel для перезаписи всех запросов в public / directory.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/ [L]
</IfModule>

просто создайте пустой

.в PHP

file в каталоге config и напишите сообщение в файле, как вы хотите сообщить пользователю acccessor

ex. доступ к forbindon сервером


укажите веб-сервер в общедоступный каталог и перезапустите его.

для Apache вы можете использовать следующие директивы:

DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">

Также вы можете запретить файлы .htaccess чересчур.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>

для нескольких файлов вы можете добавить тег выше файлов несколько раз.htaccess файлы.