我尝试配置我的Apache .conf文件以拒绝某个类别的列表,但我想允许此类别中的特定文件。 似乎目录规则比“文件”规则“更强”,因此当使用两者时 - 我无法访问该特定文件。
这是我尝试的:
<Directory /var/www/denied_directory>
order deny,allow
Deny From All
</Directory>
<Files safefile.php>
Order Allow,Deny
Allow from All
</Files>
答案 0 :(得分:20)
如果配置正确,它可以正常工作:
<Directory /var/www/denied_directory>
Order allow,deny
<Files test.php>
Order deny,allow
</Files>
</Directory>
答案 1 :(得分:9)
在Apache 2.4中,对环境变量进行额外测试以获得良好的衡量标准:
另请参阅:Require Directive
<Directory "/wikis/foswiki">
Require all denied
# Allow access to toplevel files ending in .html (in particular index.html) only
# (comment out if you don't care for this)
<Files ~ "\.html$">
<RequireAll>
Require all granted
Require not env blockAccess
</RequireAll>
</Files>
</Directory>
答案 2 :(得分:3)
将您的files指令放在目录指令中。
答案 3 :(得分:0)
To allow a specific file when access is restricted by HTTP password. Be careful, password protection is defined on filesystem basis and specific allowed files are defined by URI. Updated for Apache 2.4.
<Directory /path/to/directory/>
AuthName SecureArea
AuthType Basic
AuthUserFile /path/to/passwd-file
Require user my-user
SetEnvIf Request_URI "path/to/uri-allowed-1.php" allowedURL
SetEnvIf Request_URI "path/to/uri-allowed-2.php" allowedURL
Require env allowedURL
</Directory>
答案 4 :(得分:0)
@acond的答案中缺少一行。我认为它需要Allow
:
<Directory /var/www/denied_directory>
order deny,allow
Deny from All
<Files safefile.php>
order deny,allow
Allow from All
</Files>
由于每个指令中只有一条规则,我怀疑order
行可能无关紧要。尽管也许最外面的一个是必需的,但是因为嵌套了多个规则。 (我是apache配置的新手)
答案 5 :(得分:0)
在目录(文件夹)中创建一个.htaccess
文件,并使用以下代码块:
order deny,allow
deny from all
<Files safefile.php>
allow from all
</Files>
这将允许../safefile.php
文件,但允许../
。
如果您想允许../
(例如,您需要拥有../index.php
),则应该执行以下操作:
order deny,allow
deny from all
<FilesMatch ^(index\.php)?$>
allow from all
</FilesMatch>