3

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

我有我想出的这个功能:

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

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

谢谢!

4

4 回答 4

6

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

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
exit;
于 2009-06-25T15:45:50.543 回答
0

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

于 2009-06-25T15:43:59.487 回答
0

为确保搜索引擎不会将其编入索引,请使用 header()命令发送 404 此类;

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

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

于 2009-06-25T15:49:47.590 回答
0

只是为了澄清:

  • 您有一些 PHP,您希望系统上的其他 PHP 程序可以使用这些 PHP
  • 您不希望任何人访问它,除非通过运行其他 PHP 程序之一

(即“直接”并不意味着“除非通过本网站另一个页面的链接”)

只需将 PHP 文件保存在 webroot之外。这样一开始就没有 URL。

于 2009-06-25T15:59:28.620 回答