使用 .htaccess 禁用目录中的 PHP(包括所有子目录)

2022-08-30 08:44:33

我正在制作一个网站,允许人们上传文件,html页面等...现在我遇到了一个问题。我有一个这样的目录结构:

-/USERS
    -/DEMO1
    -/DEMO2
    -/DEMO3
    -/etc... (every user has his own direcory here)
-index.php
-control_panel.php
-.htaccess

现在我想禁用PHP,但启用服务器端包含在/USERS内部的dircories和子目录中。

这可以做到吗(以及如何:))?提前致谢。

顺便说一句,我使用WAMP服务器


答案 1

尝试禁用 .htaccess 文件中的引擎选项

php_flag engine off

答案 2

要禁用对子目录的所有访问(最安全),请使用:

<Directory full-path-to/USERS>
     Order Deny,Allow
     Deny from All
 </Directory>

如果您只想阻止直接提供PHP文件,请执行以下操作:

1 - 确保您知道服务器识别为PHP的文件扩展名(并且不允许人们在htaccess中覆盖)。我的一台服务器设置为:

# Example of existing recognized extenstions:
AddType application/x-httpd-php .php .phtml .php3

2 - 根据扩展名向 FilesMatch(或 LocationMatch)添加正则表达式

 <Directory full-path-to/USERS>
     <FilesMatch "(?i)\.(php|php3?|phtml)$">
            Order Deny,Allow
            Deny from All
    </FilesMatch>
 </Directory>

或者使用位置来匹配php文件(我更喜欢上面的文件方法)

<LocationMatch "/USERS/.*(?i)\.(php3?|phtml)$">
     Order Deny,Allow
     Deny from All
</LocationMatch>

推荐