PHP 410重定向

时间:2011-10-25 14:53:23

标签: php http redirect http-status-code-410

我正在使用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。为什么呢?

3 个答案:

答案 0 :(得分:10)

或者你可以这样使用刷新标题,它仍然会显示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)或(是一个页面但现在 Gone )的主要原因是搜索引擎不会对页面编制索引。

答案 1 :(得分:8)

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

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

答案 2 :(得分:-1)

怎么样

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

docs提供了深入的解释。