使用htaccess下载控件

时间:2012-08-28 08:25:27

标签: php apache .htaccess

我们的下载服务器有问题,想通过htaccess解决。 我们的下载服务器是许多文件的目录,其扩展名为zip|rar|mp3|wmv|flv,用户不应直接访问它们。

我们想要这种情况:当每个用户请求这样的文件时;我们将他重定向到一个页面(例如download.php),然后更新我们关于该文件的统计信息,然后将其重定向到url(因此,只需此页面即可下载文件。)

我搜索了它并发现了一种语法,但似乎有些错误!你能帮助我吗?

RewriteEngine on
# Options +FollowSymlinks
RewriteBase /
# CLOSE HOTLINKS
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?myserver.com/.*$ [NC]
RewriteRule \.(mp3|wmv|flv|exe|rar|zip|jpg)$ http://mydownloadserver.com/download.php?url=$1 [L]

感谢Mihai所以我们可以用这个htaccess文件来解决我们的问题:

RewriteBase /
RewriteCond %{HTTP_REFERER} !^http://(www\.)?anotherAllowedDomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?MyDownloadServer.com/download.php.*$ [NC]
RewriteRule \.*.(mp3|wmv|flv|exe|rar|zip|jpg)$ http://MyDownloadServer.com/download.php?url=%{REQUEST_URI} [L]

并最终处理“download.php”中的所有请求..

2 个答案:

答案 0 :(得分:1)

也许您忘记了任何文件名:

RewriteRule \.*.(mp3|mp4)$ http://mydownloadserver.com/download.php?url=%{REQUEST_URI} [L]

%{REQUEST_URI}将返回请求的uri,您可以从那里处理,如(readfile()

答案 1 :(得分:0)

尝试使用

deny from all

在.htaccess中。您可以使用您的php页面执行某些操作,并让用户下载该文件。

PS。如果我是你,如果他们试图直接访问文件,我不希望这些用户重定向到下载页面。如果他们做了他们不应该做的事情,那么在我的场景中它有点违法。因此,如果他们试图直接处理文件,我会向他们展示禁止页面。