我试图拒绝访问目录" assets / output / /"中所有原始文件名。含义" assets / output / 3342 / 45.jpg"将被允许和" assets / output / 3342 / orignal.jpg"会被禁止的。我已尝试将以下内容插入到我的apache2 / sites-avaliable / .conf中:
<Directory ^.*assets\/.*\/original.*\.*$>
AllowOverride All
order allow,deny
deny from all
</Directory>
此外,我尝试在/ assets /中的.htaccess文件中放置相似内容。不幸的是,我似乎有错误的REGEX。显然,这根据https://regex101.com起作用,但实际上并没有起作用。建议?谢谢。
答案 0 :(得分:1)
Directory
中不允许使用 Location
或.htaccess
指令。如果您在共享主机上且无法在Apache / vhost配置中进行更改,则可以使用此规则来阻止对assets/output/.*/original
的访问
RewriteEngine On
# comment below line if you want to block all URIs not just existing files
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/?assets/output/.*/original(\..*)?$ - [F,NC]
上述规则将适用于Apache config和.htaccess。如果您需要访问权限,请更喜欢Apache配置。
答案 1 :(得分:0)
这里有一个逻辑问题。如果按照您的方式使用,<Directory ...>
指令需要路径作为参数,而不是正则表达式。你可以在这样的上下文中使用正则表达式,但是你必须告诉 http服务器,所以在它前面添加一个波形符(~
):
<Directory ~ "^/.*assets/.*/$">
RewriteEngine on
RewriteRule "^/.*assets/.*/original" "-" [F]
</Directory>
记录在案:http://httpd.apache.org/docs/current/mod/core.html#directory