我有一个PHP文件,继承(包括)另一个PHP文件。所有继承的文件都位于一个名为“includes”的文件夹中。我希望能够限制对此文件夹的任何直接访问。只有服务器中的PHP文件可以与“includes”文件夹中的文件进行通信。我如何使用.htaccess来实现这样的目标?.htaccess限制访问文件夹
仅供参考,我用下面的代码,并没有奏效
Order deny,allow
deny from all
任何帮助将在您的理解
我有一个PHP文件,继承(包括)另一个PHP文件。所有继承的文件都位于一个名为“includes”的文件夹中。我希望能够限制对此文件夹的任何直接访问。只有服务器中的PHP文件可以与“includes”文件夹中的文件进行通信。我如何使用.htaccess来实现这样的目标?.htaccess限制访问文件夹
仅供参考,我用下面的代码,并没有奏效
Order deny,allow
deny from all
任何帮助将在您的理解
如果你不具备实际移动选项“包括”文档根区域以外的文件夹,并使用包含路径(即你无法从网上得到它),然后输入
deny from all
在该目录中的.htaccess目录中。
但是,替代方法是使用DEFINES指令仅允许通过特定授权文件访问这些包含程序。例如,把
<?php defined('ACCESS_ALLOWED') or die('Restricted Access'); ?>
在包含文件的顶部,然后把
<?php define('ACCESS_ALLOWED', 1); ?>
在被允许包含这些文件的程序。
这将防止包含文件的偶然GET运行它们,并且适用于任何Web服务器,而不仅仅是那些支持htaccess文件的服务器。
包括/的.htaccess:
Order deny,allow
deny from all
试过但没有工作 – 2011-01-06 00:13:51
可以真正地使用index.php
并使用header()
传递404标头:
header('HTTP/1.1 404 Not Found', 404);
IMO,这比403好,因为它就像文件夹不存在。而对于包括文件,把这个线以上第一include/require
行的主要文件:
define('INCLUDED', true);
而就在包括目录中的所有文件,把这个在最上面的部分。
if (!defined(INCLUDED)) {
header('HTTP/1.1 404 Not Found', 404);
}
您可能还想调用exit();在标题之后,因为页面仍然可以执行。 – 2012-10-31 22:55:38
根据设定在更高层次上其他可能的选项,你可能需要使用:
Satisfy all
Order deny,allow
Deny from all
我就遇到了这个当上目录中定义的基本认证,包括该行:
Satisfy any
这正在阻止我的否认从所有人的生效,因为用户被认证。
您可以在htaccess或服务器中使用以下指令拒绝直接访问该文件夹。配置CONTEX:
MOD-别名基础的解决方案
Redirect 403 ^/folder/.+$
这将重定向所有文件和/文件夹/ 403禁止错误页面的显示目录。
国防部重写基础的解决方案:
RewriteEngine on
RewriteRule ^/?folder/.+$ - [F]
如果这不起作用,可能是因为httpd.conf中设置为不读.htaccess文件。例如: <目录 “/路径/到/ webfiles”> 的AllowOverride无 切换到别的东西(例如设置AllowOverride所有),并重新启动Web服务器。 – user535673 2013-04-29 10:01:09