我们的下载服务器有问题,想通过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”中的所有请求..
答案 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。如果我是你,如果他们试图直接访问文件,我不希望这些用户重定向到下载页面。如果他们做了他们不应该做的事情,那么在我的场景中它有点违法。因此,如果他们试图直接处理文件,我会向他们展示禁止页面。