Apache RewriteRule 重写URL拦截静态资源

Apache RewriteRule 重写URL拦截静态资源

比如服务器上面: /upload/abc.pdf文件

访问地址:http://www.xxxx.com/upload/abc.pdf

用户A登录下载了该文件 把下载地址分享给用户B

用户B通过浏览器直接访问或者通过下载工具直接下载

可以通过Apache RewriteRule来重写URL地址 拦截未登录的用户访问

通过.htaccess文件修改

代码表示 匹配upload目录下所有的.pdf文件 访问时跳转至指定的文件内

(.*)正则匹配 $1匹配的内容

//.htaccess
<IfModule mod_rewrite.c>
    ...
	RedirectMatch "/uploads/(.*)\.pdf$" "/index.php/Uploads/downloadPdf?file=uploads/$1.pdf"
</IfModule>

文档地址:https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch

//Uploads.php
$file = $_GET['file'];
$path = 'C://www/';
//拼接绝对本地路径
$filename = $path.$file;
//todo 不同的需求判断

header("Content-type: application/pdf");
header("Content-Length: " . filesize($filename));
readfile($filename);

实现了通过访问PDF静态资源,跳转到PHP文件实现拦截,如果通过验证文件输出到浏览器,如果不能通过验证则不输出文件。

posted @ 2022-07-19 10:24  大智如蠢  阅读(80)  评论(0编辑  收藏  举报