首页 > 解决方案 > 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]

我似乎无法让它工作。有任何想法吗?

标签: php.htaccess

解决方案


所以基本上我设法让它工作。

注意!如果文件存在,RewriteRule 会继续提供文件,仅当文件不存在时才会触发。

我的解决方案是使用 RedirectMatch:

RedirectMatch ^.*\.(psd|pdf|whatever)$ /tools/download.php?file=$0

...并在每次链接点击时使用私人浏览器窗口来玩它,因为浏览器 - 在我的例子中是 Firefox - 以某种方式缓存“点击响应”。


推荐阅读