Сегодня рассмотрим как можно сделать 301 редирект php. Это может пригодится, когда нужно перенаправить посетителя со старой ссылки на новую, в частности, это очень и очень нужно, для того, чтобы сообщить поисковым роботам о том, что контент со старой страницы сохранился на новой (чтобы перенаправить «вес»).

Итак, как же сделать 301 редирект php?

Для того, чтобы сделать 301 редирект php нужно перед тем, как начнет выводится любое html содержимое из PHP файла (об этом см. ниже) выполнить команду:

header("HTTP/1.1 301 Moved Permanently");
header("Location: адрес_новой_страницы_или_сайта"); 
exit();

Вместо адрес_новой_страницы_или_сайта можно указывать как абсолютную ссылку, так и относительную.

Естественно, этот код можно модифицировать, например обработкой запроса к БД (для получения новой ссылки), или условиями для выбора, например так:

if($username='Petya'){
header("HTTP/1.1 301 Moved Permanently");
header("Location: /newurl.html"); 
exit();
}else{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://google.com"); 
exit();
}

Почему 301 редирект php нужно делать до вывода html

Всё очень просто. 301 редирект php, как и любой другой редирект на php выполняется путем передачи директив в header ответа сервера (данные, которые передаются перед началом html, перед объявлением doctype и тега <html>. Если PHP уже начнет публиковать любое содержимое страницы (это могут быть даже пробелы, которые случайно окажутся перед открывающей скобкой php кода: <?php), то никак не сможет изменить и дополнить уже переданные header. В зависимости от настроек PHP попытка этот сделать, скорее всего, выдаст ошибку.

Именно таким методом и пользовались создатели автосайта http://cartechnic.ru/cadillac/cadillac_evoq при настройке ссылок сайта.