如何从直接访问隐藏configuration文件?
我正在使用Laravel的Web应用程序。 上传生产中的所有东西,发现有些文件可以通过url直接访问,例如http://domain.com/composer.json
如何避免直接访问?
您正在使用错误的Web服务器configuration。 将您的Web服务器指向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
目录之外,因此不应该被访问。 这意味着你的VirtualHostconfiguration不正确。
请确保您的目录path以/public
结尾。
将Web服务器指向项目根文件夹中的公共目录
project root folder/public
但是如果您没有公用文件夹并且您已经指向根文件夹,则可以通过在.htaccess
文件中编写以下代码来拒绝访问。
<Files ".env"> Order Allow,Deny Deny from all Allow from 127.0.0.1 </Files>
在上面的代码中,首先我们拒绝所有的,只允许从自己的服务器(localhost到服务器)执行,因此我们可以保护它免受外部用户的影响。
将您的文档根目录设置为public
目录,所以其他文件将不能直接访问。 在你的apache / nginx /中查找 configuration文件。
这取决于你的webserver运行。 使用Apache将是.htaccess文件,而使用Nginx将在服务器configuration文件中处理。
您也可以在.htaccess中拒绝文件。
<Files "composer.json"> Order Allow,Deny Deny from all </Files>
使用Apache,您可以在Laravel项目的根目录中创build.htaccess文件,以将所有请求重写为public /目录。
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)$ public/$1 [L] </IfModule>