PHP 410 重定向

发布于 2024-12-11 17:04:25 字数 468 浏览 0 评论 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。为什么?

I'm using WordPress and I would to redirect all unauthorized users to the homepage.

In order to do so in the header file I put (at the begin of the file) the following PHP code:

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/");
}

Unfortunately the HTTP error code returned is always 302 (Moved permanently) and not 410 as I want. Why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

坏尐絯℡ 2024-12-18 17:04:25

或者,您可以使用刷新标头,这样它仍然会显示 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(消失)或(曾经是一个页面,但现在消失)的主要原因是搜索引擎不会为该页面建立索引。

Alternately you could use the refresh header this way it will still show a 410 response but also redirect.

<?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;
}
?>

The main reasoning for sending a 410 (Gone) or (Was a page but now its Gone) would be that search engines dont index the page.

吻风 2024-12-18 17:04:25

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

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

You can only send one response status code. So you can either send an error response (4xx) or a redirection response (3xx). Sending a 410 header when an unauthorised user tries to access a resource would be incorrect anyway.

I think just performing a 302 is more than adequate.

旧人哭 2024-12-18 17:04:25

怎么样

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

文档 提供了深入的解释。

How about

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

The docs provide an in-depth explanation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文