如何从直接访问隐藏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>