无法访问子目录下的php文件,apache-2.2 – 阻止访问子目录中的所有php文件

(和< LocationMatch>)指令与URL路径匹配,而不是严格的文件系统路径,因此不一定建议使用它来控制访问(在服务器配置中).

如果您有权访问服务器配置,那么您只需使用相关的容器.

如果不在子目录中使用.htaccess,则可以使用mod_setenvif根据请求的URL有条件地设置环境变量,然后根据此env var进行阻止.

例如:

SetEnvIf Request_URI "^/subdirectory/.+\.php$" BLOCK

Order deny,allow

Deny from env=BLOCK

Require all granted

Require not env BLOCK

我颠倒了Order指令(Apache 2.2),否则,没有额外的Allow指令,一切都会被阻止.

Apache 2.4指令需要位于< RequireAll>内.容器,首先授予所有访问权限(否则一切都被阻止),然后在设置BLOCK env var时有条件地拒绝访问.你不能有一个否定的Require指令 – 隐含的< RequireAny>容器 – 因为它不会产生任何影响(实际上,这会导致500错误).

请注意,这会阻止URL,而不是严格的“文件”.它阻止看起来像/子目录中的.php文件的请求 – 无论它们是否实际存在为物理文件.

或者,您可以在根.htaccess文件的顶部使用mod_rewrite(Apache 2.2和2.4):

RewriteEngine On

RewriteRule ^subdirectory/.+\.php$- [F]

这只是阻止(403 Forbidden)在.php中以请求/子目录结尾的所有URL.如果您特别需要为映射到真实文件的URL返回403,那么您可以包含一个附加条件(尽管这可能不必要地浪费):

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^subdirectory/.+\.php$- [F]

如果您想要返回404,请将F更改为R = 404.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值