You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2 PHP如何通过.htaccess重写直接下载链接实现下载日志统计

实现方案

完全可以通过Apache的mod_rewrite模块实现你需要的直链重写效果,操作步骤如下:

前置检查

  • 确保Apache已开启mod_rewrite模块
  • 确保下载目录的Apache配置中AllowOverride参数设置为All,允许.htaccess文件生效

配置重写规则

在你的下载文件根目录(即示例中的/files/目录)下新建.htaccess文件,写入以下内容:

RewriteEngine On

# 跳过对download.php本身的重写,避免死循环
RewriteRule ^download\.php$ - [L]

# 匹配所有真实存在的文件,内部重写到download.php处理
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ download.php?file=$1 [L]

规则说明

  • 上述配置属于内部重写,用户浏览器地址栏不会发生变化,不会影响原有直链的使用体验
  • 重写后你可以直接在download.php中通过$_GET['file']拿到用户请求的文件路径,正常执行日志记录、文件返回逻辑即可

注意事项

  • 务必在download.php中做好参数校验,过滤../等特殊字符,限制只能读取当前下载目录下的文件,避免出现任意文件读取漏洞
  • 如果你的下载文件包含多级子目录,规则可以正常适配,例如用户访问/files/soft/v1/install.exe会自动重写为download.php?file=soft/v1/install.exe,你只需要在PHP中对应处理路径即可
  • 如果你需要让用户地址栏同步跳转,可以将规则最后的[L]修改为[R=302,L],一般下载场景不建议使用跳转,会影响包管理器的兼容性

内容的提问来源于stack exchange,提问作者notrespire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:24:03