怎么用路由覆盖public里面存在的文件,跪求大神解答,急

假设我有一个图片是在public里面imgs文件夹的位置
那么我可以通过以下方式访问
http://localhost/public/imgs/75f16.jpg
但我要做防盗链
我就想用路由覆盖掉这个位置
那么我写router
Route::get('/imgs/{imgname}', 'HomeController@getimgs');
在HomeController里面写
public function getimgs($imgname){
return "hello!";
}
可是这样写返回的并不是hello,还是那张图片,求大神指点,怎么用路由覆盖public文件的位置,
主要是不想图片放到其他位置,这里面图片已经很多了
已邀请:

程序狗

赞同来自: 晒工资网

Route::get('/imgs/{imgname}', 'HomeController@getimgs');这个路由是从根目录开始的,不是从public目录开始的你应该用http://localhost/imgs/75f16.jpg来访问

ZnithMay

赞同来自:

我用的是Route::get('/public/imgs/{imgname}', 'HomeController@getimgs');无效

ZnithMay

赞同来自:

而且当我用Route::get('/imgs/{imgname}', 'HomeController@getimgs');时
输入不存在的文件时,可以正常访问控制器
不知道是不是跟版本有关,我用的是4.2

ZnithMay

赞同来自:

解决的,在虚拟机设置重写
我的是nginx,如果是apache可以在.htaccess里面设置
下面是例子
location ~* .(gif|jpg|jpeg|png|ico)$ {
valid_referers none blocked www.oschina.net oschina.net;
if ($invalid_referer) {
rewrite ^/ http://www.qq.com/daolian.jpg;

不能设成自己本网站的图片,否则将无限防盗链

}
}

xiangzi

赞同来自:

修改一下nginx或者apache 的重写配置

要回复问题请先登录注册