【问题标题】:Restrict access to directory, using .htaccess, if some page returns 404如果某些页面返回 404,则使用 .htaccess 限制对目录的访问
【发布时间】:2013-04-04 08:51:17
【问题描述】:

我试图拒绝访问整个目录,除非文件(无论它在哪里)返回 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.PHPFILE_2.PHPFILE_1.PHP... 这就是为什么我想限制对整个 DIRECTORY_B 目录的访问。

【问题讨论】:

  • 你想要 404 还是 200...?
  • 我更愿意检查 200 状态,但我也可以检查 404。任何一个都可以。
  • 为什么?!!这个有什么用?如果该目录中的文件正在通过脚本传输,那么您的拒绝将无助于您做任何事情,如果不是,那么您实际上是在拒绝所有用户(包括有效用户)的访问。
  • 您的意思是要阻止人们查看您目录中的文件吗?
  • @meewoK 是...仅当我在该目录之外检查的脚本返回 404 状态时

标签: php apache .htaccess http-headers


【解决方案1】:

你不能做这种依赖。htaccess 不是脚本

【讨论】:

  • 我最终不得不使用 PHP
【解决方案2】:

做你想做的事情的通常方法是拥有一个包含在所有 PHP 文件中的身份验证 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 设置的标头并显示不同的输出。

【讨论】:

  • 这帮助我更近了一步!仍在处理它,因为某些文件与我正在使用的脚本冲突。
  • 我正在使用这个...mysqlajaxtableeditor.com 我在课堂上放置的所有内容都会导致某种错误。
猜你喜欢
  • 2015-12-02
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2023-04-09
相关资源
最近更新 更多