是否可以允许通过
当前设置:
<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。
还尝试使用文件的绝对路径
<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 中的文件也无法访问。
我相信有更好的方法来解决这样的问题?
亲切的问候,
多米尼克
感谢阿卡查,
DirectoryMatch 方法是错误的想法。
这个问题的解决方案很简单 - 正如 arkascha 所推荐的:
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
<Directory /var/www/>
<Files index.php">
Allow from all
</Files>
</Directory>
<Directory /var/www/*/*">
<Files index.php>
Deny from all
</Files>
</Directory>
<Directory /var/www/admin/>
<Files index.php>
Allow from all
</Files>
</Directory>
非常感谢。