0

我试图拒绝访问整个目录,除非文件(无论它在哪里)返回 200 状态。这需要写在我的 .htaccess 文件中。我知道这不是有效的 .htaccess 语法,除了deny from all部分之外,我只是在展示我的概念。

if(external-page.php returns anything but 200 header)
{
    # deny the current directory
    deny from all
}

external-page.php将运行一个脚本来检查用户是否具有有效的凭据。如果他们这样做,它将加载状态为 200 的页面。如果他们不是有效用户,它将返回 404 状态。

.htaccess 文件位于我要拒绝的目录中,但是,我要检查其状态的脚本不在该目录中。

提前致谢。

更新:因为似乎有些混乱。我在下面列出了我的目录结构:

DIRECTORY_A/
    DIRECTORY_B/
        .HTACESS
        FILE_1.PHP
        FILE_2.PHP
        FILE_3.PHP
    FILE_A.PHP

基于这个目录结构,我想要做的是......如果FILE_A.PHP返回 404(或者它可以返回任何东西,只要我可以检查它)。然后我想拒绝所有访问DIRECTORY_B. 如果FILE_A.PHP返回 200(或 true,或者我可以检查的任何内容),那么我想允许访问DIRECTORY_B

如果使用 .htaccess 不是实现此目的的最佳方法,那么我愿意接受另一种方法。但是,我被限制将代码放入FILE_1.PHPandFILE_2.PHPFILE_1.PHP... 这就是为什么我要限制对整个DIRECTORY_B目录的访问。

4

2 回答 2

2

你不能做这种依赖 .htaccess is not a script

于 2013-04-12T00:12:55.797 回答
1

做你想做的事情的通常方法是拥有一个包含在所有 PHP 文件中的身份验证 php 脚本并检查会话。当您在另一个中包含一个 PHP 文件时,它会被执行。

因此,FILE_A.php 将具有身份验证代码,并被 FILE_1.php、FILE-2.php、FILE_3.php 包含。

您不需要 .htaccess,因为您可以直接从 PHP 设置标题(例如禁止)。

  • 例如 header('HTTP/1.1 403 Forbidden');

看:

只是为了好玩,尽管您可以执行以下操作:

  • 在 FILE_A.php 中进行身份验证并根据结果设置标头。
  • 从其他 php 文件中包含 FILE_A.PHP。
  • 在其他文件中使用 var_dump(http_response_code()) 来检测 FILE_A.php 设置的标头并显示不同的输出。
于 2013-04-12T00:28:11.860 回答