是否可以通过< files>访问特定文件?或< filesmatch>以便此规则不适用于子文件夹中具有相同名称的文件?
当前设置:
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
<Directory /var/www/>
<Files index.php>
Allow from all
</Files>
</Direcotry>
<Directory /var/www/admin/>
<Files index.php>
Allow from all
</Files>
</Direcotry>
我们假设以下内容:
会发生什么:
当允许访问webroots index.php时,所有子文件夹中的所有index.php文件都可以访问。
尝试了什么:
使用DirectoryMatch禁止访问子文件夹中的index.php。
<FilesMatch ".+\.php$">
Deny from all
</FilesMatch>
<Directory /var/www/>
<Files index.php>
Allow from all
</Files>
</Direcotry>
<DirectoryMatch "/var/www/(.+)/">
<Files index.php>
Deny from all
</Files>
</DirectoryMatch>
<Directory /var/www/admin/>
<Files index.php>
Allow from all
</Files>
</Direcotry>
现在,不允许访问所有子文件夹中的所有index.php文件 - 但也不允许访问/ admin /中的index.php。
还尝试使用absolut pathes文件
<FilesMatch ".+\.php$">
Deny from all
</FilesMatch>
<Files /var/www/index.php>
Allow from all
</Files>
<Files /var/www/admin/index.php>
Allow from all
</Files>
这也行不通。 没有index.php文件可访问 - 即使是webroot和admin-folder中的文件也无法访问。
我认为有更好的方法可以解决这样的问题吗?
亲切的问候,
多米尼克
答案 0 :(得分:0)
感谢arkascha,
DirectoryMatch方法是错误的想法。
对此的解决方案很简单 - 正如arkascha所推荐的那样:
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
<Directory /var/www/>
<Files index.php">
Allow from all
</Files>
</Direcotry>
<Directory /var/www/*/*">
<Files index.php>
Deny from all
</Files>
</Directory>
<Directory /var/www/admin/>
<Files index.php>
Allow from all
</Files>
</Direcotry>
非常感谢。