我想拒绝访问app
目录中的任何内容,但包含Assets
文件夹的子文件夹除外。
例如:
允许这些文件
/app/bundles/ApiBundle/Assets/css/Thing.js /app/bundles/AssetsBundle/Assets/css/mautic.css
拒绝这些:``` /app/bundles/Whatever/Config/config.php /app/bundles/AppCache.php /app/whatever.php
这很好用(https://serverfault.com/a/450378/310646)...如果我不使用正则表达式。
例如,这个有效:
location ^~ /app/bundles/ApiBundle/Assets/ {
allow all;
}
location ^~ /app/ {
deny all;
}
但事实并非如此:
location ^~ /app/bundles/.+/Assets/ {
allow all;
}
location ^~ /app/ {
deny all;
}
有任何想法吗?
答案1
我明白了。
location ~ /app/bundles/.*/Assets/ {
allow all;
access_log off;
}
location ~ /app/ { deny all; }
但是...这需要高于任何可能对其产生影响的其他位置块(例如location ~ \.php$
)。
在正则表达式之前使用^~
,并且不适用于正则表达式......