0

我正在使用 WordPress,我会将所有未经授权的用户重定向到主页。

为了在头文件中执行此操作,我将(在文件开头)以下 PHP 代码:

if (bp_current_component() != "" 
    && bp_current_component() != "event" 
    && !is_user_logged_in() 
    && !isset($_COOKIE[affiplus]) 
    && !isset($_GET[affid]))
{
    header( "HTTP/1.1 410 Gone" ); 
    header( "Location: ".get_option('siteurl')."/home/");
}

不幸的是,返回的 HTTP 错误代码始终是 302(永久移动),而不是我想要的 410。为什么?

4

3 回答 3

11

或者,您可以通过这种方式使用刷新标头,它仍然会显示 410 响应,但也会重定向。

<?php 
if (bp_current_component() != "" && 
    bp_current_component() != "event" && 
    !is_user_logged_in() && 
    !isset($_COOKIE['affiplus']) && 
    !isset($_GET['affid']))
{
    header($_SERVER["SERVER_PROTOCOL"]." 410 Gone"); 
    header("Refresh: 0; url=".get_option('siteurl')."/home/");
    exit;
}
?>

发送 410 (Gone) 或 (Was a page but now its Gone ) 的主要原因是搜索引擎不索引该页面。

于 2012-11-24T19:09:35.500 回答
8

您只能发送一个响应状态码。因此,您可以发送错误响应 (4xx) 或重定向响应 (3xx)。当未经授权的用户尝试访问资源时发送 410 标头无论如何都是不正确的。

我认为只执行 302 就足够了。

于 2011-10-25T14:55:49.993 回答
-2

怎么样

header( "Location: ".get_option('siteurl')."/home/", true, 410);

文档提供了深入的解释。

于 2011-10-25T14:56:14.980 回答