Laravel-捕获特定的公用文件夹路由

时间:2018-08-14 11:49:02

标签: laravel routes

抱歉,这听起来很基础。

我遇到了一个场景,当用户访问公用文件夹中的某些文件时,我需要添加某些检查。

使用默认设置,您可以通过在浏览器中键入URL来直接访问公共目录中的特定文件。抱歉,这具有误导性。 您可以通过以下方式访问图像:

localhost/img/banner.jpg

但是我无法抓住它:

Route::get('/img/banner.jpg', function(){
  //checks goes here
});

应该怎么做?

2 个答案:

答案 0 :(得分:1)

您应该为投放图片(文件)创建控制器,并在需要控制时禁止直接访问。例如:

Route::get('/file/{name}', function ($name) {
    // Your check and return file with correct response headers 
}

或者是为此创建控制器的最佳方法。

https://laravel.com/docs/5.6/filesystem。查看laravel文档,了解如何管理多个文件存储。

答案 1 :(得分:0)

我只是发现了另一种不用文件系统的方法。

在公用文件夹内的.htaccess中,添加以下内容:

RewriteCond \banner.jpg$ !-d
RewriteRule ^ index.php [L]

哪个可以让laravel处理路线,然后我就可以使用它了:

Route::get('/img/banner.jpg', function(){
  //checks goes here
});