【问题标题】:custom filename with .htaccess and db update at download下载时带有 .htaccess 和 db 更新的自定义文件名
【发布时间】:2022-01-15 00:03:56
【问题描述】:

我正在使用当前的 .htaccess 从我的服务器下载文件,使用 RewriteEngine 自定义文件名。 我的规则如下所示:

RewriteRule ^d/([0-9]+)/(.*).jpg files/photo-$1.jpg

$1 也是它存储在 db 中的文件 ID。 一切正常,但我想在下载文件时更新我的​​数据库,当访问规则时,我需要向 download.php?id=$1 发送请求。 有没有办法用 .htaccess 和 RewriteEngine 做到这一点?我搜索了很多,但我没有找到任何解决方案。 任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    我需要发送一个请求到 download.php?id=$1

    然后将请求重写为download.php?id=$1 而不是files/$2-$1.jpg。然后,您的 PHP 脚本必须在响应中提供实际图像(即files/<name>-<id>.jpg),而不是像您当前所做的那样直接重写文件。

    【讨论】:

    • 我曾经想过,但是我会丢失自定义文件名,我不想在 php 中使用 ReadFile 来更改文件名,它会过多地加载服务器,.htaccess 是最好的方法重命名它们。
    • @B13 您不会“丢失自定义文件名”。 ^d/([0-9]+)/(.*).jpg 是您的“自定义文件名”,而 mod_rewrite 仍在重写该请求。但是,如果使用 .htaccess,则需要在 PHP 中使用 readfile() 来提供文件。另一种选择...如果您有权访问服务器配置,那么您可以为此类请求配置自定义日志文件(但这不会使用您的 download.php 脚​​本)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多