【问题标题】:Apache2 PHP - How do I use .htaccess to rewrite direct download linksApache2 PHP - 如何使用 .htaccess 重写直接下载链接
【发布时间】:2021-12-25 19:13:07
【问题描述】:

我有一个文件目录,用户包管理器使用文件的直接链接下载这些文件。 我正在尝试设置文件日志记录,以便获取有关下载的统计信息。我正在使用我在 GitHub 上找到的这个脚本:https://github.com/iNamik/PHP-Download-Tracker

  • 我正在使用上面的脚本,它由一个文件目录、一个日志目录和一个列出要下载的文件的 index.php 组成。

  • Index.php 列出下载目录中的所有文件。这个文件可以重命名为任何东西,即download.php

  • 如果我使用 index.php 并单击要下载的文件,它会记录信息并下载。

  • 如果我使用文件的直接链接 (/downloadfolder/file.exe),index.php 将被绕过并且没有任何记录。

是否可以在 Apache 中使用 mod_rewrite 之类的东西,在直接链接中的文件名前添加 download.php?file=?

例子:

  1. 访问此直接链接:https://exampledomain.com/files/file.pdf --> 这不会被记录。文件传输开始。

  2. 是否自动将其重写为:https://exampldomain.com/files/download.php?file=file.pdf --> 这确实会被记录。文件传输开始

【问题讨论】:

  • 用户如何获得文件的直接链接?解决方案通常是确保您的所有链接都通过跟踪器。
  • 这是一个 APT 回购。用户在他们的手机上从他们的包管理器下载文件。直接下载位置存储在包管理器读取的 Packages.gz 文件中。

标签: php mod-rewrite apache2


【解决方案1】:

在使用 htaccess 测试仪进行了一些头发拉动和测试后,这就是我想出的。

我的 download.php 在 files 目录中。

RewriteEngine On
RewriteBase /files/
RewriteRule ^(.+(deb|DEB))$ download.php?file=$1 [L]

【讨论】:

    【解决方案2】:

    这会将不存在的任何内容重定向到 index.php

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.*$ index.php [L]
    

    【讨论】:

    • 感谢您的回答,但我并不完全符合我的想法。用户直接从 example.com/files/example.exe 下载文件我希望将 URL 重写为:example.com/files/download.php?file=example.exe
    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多