2013-04-12 53 views
0

我试图拒绝对整个目录的访问,除非文件(它永远可能)返回200状态。这需要写入我的.htaccess文件。我知道这是无效的.htaccess语法,除了deny from all部分,我只是展示了我的概念。限制对目录的访问,如果某些页面返回,使用.htaccess 404

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

外部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(或者真的,或者我可以检查的任何东西),那么我想允许访问DIRECTORY_B

如果使用.htaccess不是最好的方法来实现这一点,那么我打开另一种方法。然而,我被限制在FILE_1.PHPFILE_2.PHPFILE_1.PHP ......这就是为什么我想限制访问整个DIRECTORY_B目录的代码。

+0

你想404或200 ...? –

+0

我宁愿检查200状态,但我也可以检查404。任何一个都没问题。 – doitlikejustin

+0

为什么?这有什么用?如果该目录中的文件正在通过脚本进行传输,则您拒绝所有文件都不会帮助您执行任何操作,否则,您实际上拒绝所有用户(包括有效用户)的访问。 – ahmad

回答

2

你不能做这种依赖性的.htaccess的不是一个脚本

+0

我最终不得不使用PHP – doitlikejustin

1

的常用方法做你想做的是有包含在所有的PHP文件,并检查会话的认证PHP脚本。 当您将一个PHP文件包含在另一个PHP文件中时,它会被执行。

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

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

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

见:

只是为了好玩,虽然你可以做到以下几点:

  • 在FILE_A.php中执行认证并根据结果设置标题。
  • 从其他php文件中包含FILE_A.PHP。
  • 在其他文件中使用var_dump(http_response_code())来检测由FILE_A.php设置的标题并显示不同的输出。
+0

这帮助我更靠近一步!仍在使用它,因为一些文件与我正在使用的脚本冲突。 – doitlikejustin

+0

你坚持什么? –

+0

我正在使用这个...... http://www.mysqlajaxtableeditor.com/我在课堂上放置的所有东西都会导致某种错误。 – doitlikejustin

相关问题