禁止直接访问htaccess中的文件?

时间:2013-12-14 12:01:55

标签: .htaccess

我想禁止用户直接访问我网站上的PHP脚本。

应该从网站上的其他脚本访问此脚本。

例如," somepage.php"可以拨打" upload.php",但不允许用户输入 mywebsite.com/upload.php 。不幸的是,我无法将脚本移动到特定文件夹。

2 个答案:

答案 0 :(得分:1)

好的,你可以用以下方法做到这一点:

<Files yourfile.inc.php>
  order allow,deny
  deny from all
</Files>

但是,我仍然建议您在PHP中执行此操作,以便将其添加到包含文件中:

if ( !defined( 'YOURPROGRAM' ) )
{
  echo <<<EOT
You cannot display this file
EOT;
  exit( 1 );
}

然后在您希望有权访问此文件的文件中,您需要执行以下操作:

define( 'YOURPROGRAM', 1 );

这样,您的代码可以在多个平台上共享,包括ngynx等。

参考文献:http://htpasswdgenerator.com/apache/htaccess.html和MediaWiki代码。

答案 1 :(得分:0)

根据我在其他答案中的评论,很明显这个问题实际上有些不同。由于我觉得其他答案与最初提出的问题有关,我不想编辑那个,而是添加这个额外的答案。

这个将回答:如何阻止其他网站深度链接我的iframe中显示的网页?

为了正确地做到这一点,可以使用PHP Sessions。然后,在您的主页面中,您将启动会话,如果会话实际上已启动,则该用户将只能查看“内部”页面。

假设您有两个页面:index.php和inner.php。您将把以下内容放在index.php的开头:

if (session_status() !== PHP_SESSION_ACTIVE) session_start();

在inner.php中你将拥有:

if (session_status() !== PHP_SESSION_ACTIVE) die("Deep linking detected");

你绝对不能从htaccess或页面代码之外的任何其他地方做这样的事情。

参考:http://www.php.net/manual/en/function.session-status.php