Intereting Posts
Как сделать автоматический вход в систему, сохранить сеанс в браузере Есть ли какой-либо возможный способ найти название страны, использующей IP-адрес с языком сценариев PHP? MAMP / Symfony: MAMP переопределяет параметр date.timezone от php.ini, Symfony не работает Можно ли использовать cURL для захвата файлов через SSH? Форма внутри выпадающего списка TbNavbar Ошибка синтаксиса SQL Версия сервера MariaDB для правильного синтаксиса для использования рядом с 'WHERE ID = 4' в строке 1 неопределенная константа класса 'mysql_attr_init_command' в MAMP с использованием php 5.4.4 Ошибка mPDF: некоторые данные уже были отправлены в браузер Макет почты в окне разработки xampp Как отсортировать массив ассоциативных массивов по значению заданного ключа в PHP? Как я могу установить флажок с php? Установка pecl и груши на OS X 10.11 El Capitan, macOS 10.12 Sierra, macOS 10.13 High Sierra Php Search_Array с использованием подстановочного знака Checkstyle для PHP как плагин Eclipse Неожиданное поведение current () в цикле foreach

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'); }; 

Solutions Collecting From Web of "301 или 302 Перенаправление с помощью PHP"

Для 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 , выполните следующие действия:

 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> 

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

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

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

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

Второй особый случай – заголовок «Местоположение:». Он не только отправляет этот заголовок обратно в браузер, но также возвращает код статуса 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; ?> 

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

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

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

Я не думаю, что это действительно важно, как вы это делаете, от 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 (по умолчанию).