2

我正在尝试获取允许以下列形式请求的任何文件的重写规则:

/assets/files/uploads/306/This-is-an-awesome-file.jpg

由 file.php 处理,以及任何请求的文件,例如

/assets/files/uploads/306.jpg

不匹配并正常返回文件

路径:/assets/files/uploads/ 保证在那里,第四个令牌保证是 'number'.'extension' 或 'number'/'title'.'extension'

4

1 回答 1

1

在更一般的正则表达式中,使用 / 和 . 逃脱

^\/assets\/files\/uploads\/[0-9]+\/[a-zA-Z0-9_]+\.[a-zA-Z]+$

+ 表示前面的字符必须至少出现一次。[something] 指定了一个有效的字符范围,因此 [az] 表示任何小写字母,而 [abc] 表示只允许 ab c。因此,这里我们要求有一个数字(至少一个数字),然后是斜线,然后是文件名(我假设文件名是字母数字和下划线,但您可以在 [a-zA-Z0-9_] 中包含其他内容是合法的),后跟一个 . 和文件扩展名。

^ 表示行首,$ 表示行尾。您可能需要也可能不需要这些。

不熟悉 Apache RewriteRule,我不知道这对正则表达式有什么影响。

于 2013-03-19T20:27:29.323 回答