Подтвердить что ты не робот

301 или 302 Перенаправление с помощью PHP

Я рассматриваю использование следующего кода на этапе запуска веб-сайта, чтобы показать пользователям страницу обслуживания, показывая мне остальную часть сайта.

Есть ли способ показать правильное состояние переадресации 302 поисковым системам или я должен искать другой подход .htaccess?

$visitor = $_SERVER['REMOTE_ADDR'];
if (preg_match("/192.168.0.1/",$visitor)) {
    header('Location: http://www.yoursite.com/thank-you.html');
} else {
    header('Location: http://www.yoursite.com/home-page.html');
};
4b9b3361

Ответ 1

При a 302 Found, то есть временное перенаправление:

header('Location: http://www.yoursite.com/home-page.html');
// OR: header('Location: http://www.yoursite.com/home-page.html', true, 302);
exit;

Если вам нужна постоянная переадресация, aka: 301 Moved Permanently, do:

header('Location: http://www.yoursite.com/home-page.html', true, 301);
exit;

Для получения дополнительной информации ознакомьтесь с руководством по PHP для функции заголовка Doc. Кроме того, не забудьте вызвать exit; при использовании header('Location: ');

Но, учитывая, что вы выполняете временное обслуживание (вы не хотите, чтобы поисковые системы индексировали вашу страницу), он рекомендовал вернуть 503 Service Unavailable с помощью специального сообщения (то есть вам не нужно перенаправление):

<?php
header("HTTP/1.1 503 Service Unavailable");
header("Status: 503 Service Unavailable");
header("Retry-After: 3600");
?><!DOCTYPE html>
<html>
<head>
<title>Temporarily Unavailable</title>
<meta name="robots" content="none" />
</head>
<body>
   Your message here.
</body>
</html>

Ответ 2

Следующий код выдает 301 переадресацию.

header('Location: http://www.example.com/', true, 301);
exit;

Ответ 3

Вы проверили, какой заголовок вы получаете? Потому что вы должны получать 302 с помощью выше.

Из руководства: http://php.net/manual/en/function.header.php

Второй особый случай - заголовок "Location:". Он не только отправляет этот заголовок обратно в браузер, но также возвращает код статуса REDIRECT (302) в браузер, если код статуса 201 или 3xx уже не установлен.

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

Ответ 4

Из документации PHP :

Второй особый случай - заголовок "Location:". Он не только отправляет этот заголовок обратно в браузер, но также возвращает код статуса REDIRECT (302) в браузер, если код статуса 201 или 3xx уже не установлен.

чтобы вы уже поступали правильно.

Ответ 5

Я не думаю, что это действительно важно, как вы это делаете, от PHP или htaccess. Оба достигнут того же.

Единственное, что я хочу отметить, - хотите ли вы, чтобы поисковые системы начали индексировать ваш сайт на этом этапе обслуживания или нет. Если не, вы можете использовать код состояния 503 ( "временно вниз" ). Вот пример htaccess:

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteCond %{REMOTE_HOST} ^192\.168\.0\.1
ErrorDocument 503 /redirect-folder/index.html
RewriteRule !^s/redirect-folder$ /redirect-folder [L,R=503]

В PHP:

header('Location: http://www.yoursite.com/redirect-folder/index.html', true, 503);
exit;

С текущим кодом перенаправления PHP, который вы используете, перенаправление - это 302 (по умолчанию).