.htaccess规则文件与所有子文件夹匹配(子文件夹是随机创建的)

时间:2019-01-22 19:36:14

标签: apache .htaccess url-rewriting

我试图在这里找到解决方案,但没有。我每天都在与htaccess一起工作,但是我有一个无法解决的问题。

我有目录结构:

/cmd/user_files/**[random_folder]**/avatars/pic.jpg

/cmd/user_files/中,我有更多文件夹是在某些应用程序上随机创建的。在每个随机创建的文件夹下,都有一些我不想公开访问的文件和图片,并且我有一个子文件夹“头像”,我只想显示这些文件和图片。jpg

我在.htaccess中创建了/cmd/user_files/,并添加了以下内容:

order allow,deny
deny from all
allow from 127.0.0.1

因此,我拒绝访问/cmd/user_files/下的每个文件和子文件夹。

现在,我需要添加到此.htaccess中,才能显示.jpg的内容

/cmd/user_files/[random_folder]/avatars/*.jpg

1 个答案:

答案 0 :(得分:1)

代替使用mod_auth ...可能更容易使用mod_rewrite。例如,在/cmd/user_files/.htaccess文件中:

RewriteEngine On
RewriteRule !^[^/]+/avatars/.*\.jpg$ - [F]

这会阻止(禁止访问403)所有文件/文件夹,但不包括与正则表达式^[^/]+/avatars/.*\.jpg$(相对于/cmd/user_files/子目录)匹配的URL路径。

更新:请注意! 模式上的RewriteRule前缀-此否定正则表达式。这是一个Apache运算符,它不是regex本身的一部分。

旁注... order allow,deny是Apache 2.2指令。如果您使用的是Apache 2.4+,则语法会有所不同。