PHP 410 редирект - PullRequest
       42

PHP 410 редирект

0 голосов
/ 25 октября 2011

Я использую 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 ]

10 голосов
/ 24 ноября 2012

Кроме того, вы можете использовать заголовок обновления таким образом, чтобы он все равно отображал ответ 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 (Унесенных) или (Была страница, но теперь ее Унесенных ) заключается в том, что поисковые системы не индексируют страницу.

8 голосов
/ 25 октября 2011

Вы можете отправить только один код состояния ответа. Таким образом, вы можете отправить ответ об ошибке (4xx) или ответ о перенаправлении (3xx). Отправка заголовка 410, когда неавторизованный пользователь пытается получить доступ к ресурсу, будет в любом случае неправильной.

Я думаю, что выполнение 302 более чем адекватно.

0 голосов
/ 25 октября 2011

Как насчет

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

Документы дают подробное объяснение.

...