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文件实现拦截,如果通过验证文件输出到浏览器,如果不能通过验证则不输出文件。