PHP:阻止直接访问页面

时间:2009-06-25 15:38:25

标签: php http-status-code-404

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

我有这个功能,我想出了它的作用:

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

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

谢谢!

4 个答案:

答案 0 :(得分:5)

请勿重定向,但发送404状态代码:

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

答案 1 :(得分:0)

对于搜索引擎,如果你返回HTTP状态404,他们不应该索引我相信。但是你总是可以重定向到robots.txt所涵盖的某个地方

答案 2 :(得分:0)

要确保搜索引擎不对其编制索引,请使用header()命令发送404 lke;

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

或者将所有此类文件放在一个文件夹中,“包括”说,并在robots.txt文件中添加“拒绝/包含/”。这样,您还可以在同一目录中添加一个“.htaccess”文件,其中包含一行 - “全部拒绝” - 这将告诉Apache阻止访问(如果apache配置正确),这是另一层安全。

答案 3 :(得分:0)

只是为了澄清:

  • 您希望系统上的其他PHP程序可以使用某些PHP
  • 除了运行其他PHP程序之外,您不希望任何人访问它

(即“直接”并不意味着“除非通过本网站上其他页面的链接”)

只需将PHP文件保留在 webroot之外。这样一来就不会有URL。