获取请求文件大小的.htaccess规则

rev*_*evo 6 regex apache .htaccess mod-rewrite

我想知道是否会有这样的事情.我想检查文件的大小,然后根据它做htaccess规则.例如:

# like this line
CheckIf {REQUESTED_FILE_SIZE} 50 # MB
AuthName "Login title"
AuthType Basic
AuthUserFile /path/to/.htpasswd
require valid-user
Run Code Online (Sandbox Code Playgroud)

很明显,我想让一些用户只能使用特定文件大小的文件(使用身份验证)

任何想法都表示赞赏.

更新#1

应该在htaccess中完成

更新#2

有这么多文件,他们的网址已经发布在博客中.因此无法将较大的文件分隔到另一个文件夹并更新每个帖子,文件大小的限制也可能在将来发生变化.

更新#3

这是一个安装了PHP&helicon App的Windows服务器

更新#4

有些人对真正的问题感到困惑,我也不清楚它.

.htaccess + PHP文件用于身份验证(使用API​​)和检查文件大小+所有可下载文件都在同一服务器上我们的网站托管在不同的服务器上.

rev*_*evo 0

当时我问 Apache 2.4 已经出来了,所以这个答案可能是正确的。

阿帕奇表达式

从 Apache 2.4 开始,引入了一种称为表达式的新功能。据此,您可以在指令中使用某些函数,也可以与RewriteCond.

幸运的是,有一个名为的函数filesize()可以使用比较运算符来比较文件大小: -et -gt -ge -lt -le -ne

话虽如此,但文档缺乏有关此功能的信息,以下是比较文件大小的相应规则:

RewriteCond expr "filesize('%{REQUEST_FILENAME}') -gt 52428800"
RewriteRule ** **
Run Code Online (Sandbox Code Playgroud)

在内部使用表达式RewriteCond应该在以下语法中完成:

RewriteCond expr "..."
Run Code Online (Sandbox Code Playgroud)

巴诺夫

expr        ::= "true" | "false"
              | "!" expr
              | expr "&&" expr
              | expr "||" expr
              | "(" expr ")"
              | comp
Run Code Online (Sandbox Code Playgroud)

您可以在文档页面找到完整的BNF