php - htaccess:将某些文件类型重定向到 PHP 脚本
问题描述
我试图阻止直接访问某些文件类型并将它们重定向到 PHP 脚本。
示例:用户/浏览器请求
http://example.com/files/example.pdf
我希望它由 download.php 脚本处理。所以基本上最终的网址应该是
http://example.com/tools/download.php?file=files/example.pdf
我试过的:
<FilesMatch "\.(psd|log|sh|pdf|doc)$">
RewriteRule ^/files/(.*)$ /tools/download.php?file=$1 [NC,L]
#Order Allow,Deny - with or without this
#Deny from all - with or without this
</FilesMatch>
和
RewriteRule ^.*\.(pdf|doc|xls|xlsx|docx|zip)$ /tools/download.php?file=$1 [R=301,L]
我似乎无法让它工作。有任何想法吗?
解决方案
所以基本上我设法让它工作。
注意!如果文件存在,RewriteRule 会继续提供文件,仅当文件不存在时才会触发。
我的解决方案是使用 RedirectMatch:
RedirectMatch ^.*\.(psd|pdf|whatever)$ /tools/download.php?file=$0
...并在每次链接点击时使用私人浏览器窗口来玩它,因为浏览器 - 在我的例子中是 Firefox - 以某种方式缓存“点击响应”。
推荐阅读
- flutter - 我应该担心 Flutter 和 Dart 版本不同吗?
- bash - GitHub Action: bash 脚本 grep 匹配失败但在本地工作
- flutter - 以全局方式将骆驼案转换为蛇案
- java - 无法测试没有内容类型的 PUT 请求
- javascript - 我正在尝试使用“导入”,但出现了不和谐的模块错误
- powerquery - Power Query:如何使用左(基于 A4 的右函数)插入列
- vba - 将格式从 Word 保留到 Excel 的问题
- java - 在 PostPersist 事件方法中更新 JPA 实体
- asp.net-core - 上传模式中的文件未通过
- java - 如何使用 Java 读取 XML 文件的所有子元素?