2009-06-25 169 views
2

我有一些页面,我不希望用户能够直接访问。PHP:防止直接访问页面

我有这个功能,我想出了它的工作原理:

function prevent_direct_access() 
{ 
    if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF']) 
    { 
     //include_once('404.php'); 
     header("Location: 404.php"); 
    } 
} 

这不正是我想要的,该URL不会改变,但内容一样。不过,我想知道是否有什么我需要添加,告诉搜索引擎,这是一个404,而不是索引它。请记住,我不希望URL改变。

谢谢!

+0

您是否有理由采用这种方法而不是使用robots.txt? – illvm 2009-06-25 15:52:42

回答

5

不重定向而是发送404个状态码:

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 
exit; 
+0

我应该添加这与头()我有我的代码或添加此并删除头(()已经在我的代码..只是想澄清..谢谢! – 2009-06-25 15:52:58

+1

用我的代码替换你的`header`调用。 – Gumbo 2009-06-25 15:58:09

0

为搜索引擎,如果你返回HTTP状态404,他们不应该索引我相信。但你总是可以重定向到一个robots.txt某处覆盖

0

为了确保搜索引擎不索引它,使用header()命令发送一个404 lke这个;

header("HTTP/1.0 404 Not Found"); 

或者把所有这些文件一个文件夹中,“包括”之称,并添加“拒绝/包括/”到您的robots.txt文件。这样,您也可以在同一个目录中添加一个“.htaccess”文件 - “拒绝所有人” - 这将告诉Apache阻止访问(如果apache配置正确),以实现另一层安全性。

0

只是为了澄清:

  • 你必须要提供给系统
  • 你不希望任何人访问它在其他PHP程序,除了通过运行其他PHP程序的一个部分PHP

(即“直接”并不意味着“除了在本网站下面从另一个页面的链接”)

只要保持PHP文件外部 webroot。这样它首先不会有URL。