LAMP:将文件下载请求重定向到php页面以计算文件下载

时间:2016-10-29 08:13:14

标签: php apache .htaccess redirect mod-rewrite

目前我有一个客户端应用程序直接从我在LAMP服务器上运行的WEB服务器上下载文件。文件地址如下:http://example.com/application/images/*.jpg

我要计算下载文件的次数;但是,我无法更改客户端应用程序,因此他们可以将请求发送到其他地址或页面。

我想有一些基于URL重写的技术,因此我可以将http://example.com/application/images/xyz.jpg等形式的请求转换为http://example.com/application/counter.php?file=xyz.jpg之类的内容。通过这种方式,我可以处理文件下载并使用this answer中建议的技术对其进行计数。

所以我想知道如何设置.htaccess文件或使用mod-rewrtie将我的请求重定向到counter.php页面?

我当前的.htaccess文件如下所示:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
# AddHandler application/x-httpd-php54 .php .php5 .php4 .php3
Options -Indexes
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

P.S。我的Web服务器在共享主机上运行,​​因此我无法访问此服务器上的所有内容,但我可以执行添加/编辑.htaccess文件等任务。

1 个答案:

答案 0 :(得分:0)

您可以在站点根目录中使用这些规则.htaccess:

RewriteEngine On

RewriteRule ^(application)/images/(xyz\.jpg)$ $1/counter.php?file=$2 [QSA,L,NE]

然后在counter.php内保留一个计数,然后使用jpg加载$_GET['file']图像并使用正确的MIME类型。