现代的PHP框架通常只有一个入口文件,例如在public文件夹下,框架的核心文件都在public的上一级目录,同时public文件夹下还会存放一些图片,js,css等静态资源。通常这些都不需要执行php的权限,那么可以通过修改apache的配置文件来禁止这些目录的执行。通过网络搜索,通常只有禁止具体某一个文件夹的执行权限,但如果我要禁止多个目录,岂不是要写多段以下代码:
<Directory "F:/wamp/www/public/uploads/">
<FilesMatch "\.(?i:php|php3|php4)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
显然不方便,Directory 可以通过正则表达式来匹配目录:
注意:需要写到apahce配置文件里才有效
<Directory "F:/wamp/www/public/(.*)/">
<FilesMatch "\.(?i:php|php3|php4)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
这样当执行public文件夹下的子文件夹里的php文件时,页面将会显示Forbidden