При серьезной разработке сайта возникает необходимость выдавать корректные http заголовки php средствами. Вы спросите - зачем? Затем, что корректность HTTP-заголовков влияет на то, как будут понимать поисковые роботы получаемую с вашего сайта информацию, что напрямую влияет на продвижение сайта, т.е. на "СЕО".

ВАЖНО ПОМНИТЬ!
мордифицировать HTTP header с помощью языка php возможно только если директива header выводится на клиента до формировании страницы, то есть до вывода любой иной инофрмации.
В противном случае назначение нового статуса HTTP заголовку / header выдает ошибку.

Как изменить код ответа сервера.

В большинстве случаев заголовки изменяются непосредственно в ваших php функциях (методах).

<?php
function checkUrl( $url )
{
   if( preg_match( "/^http.*/i", $url ) == false )
       header( 'Location: http://www.ru/404.html' );
}
...
?>

Рассмотрим несколько примеров модификации HTTP заголовков.

Страница выполнена корректно

header( 'HTTP/1.1 200 OK' );

Запрашиваемая страница не найдена

header( 'HTTP/1.1 404 Not Found' );

Доступ запрещен:

header( 'HTTP/1.1 403 Forbidden' );

Страница перемещена навсегда.

Используется для корректировки урлов поисковых серверов.

header( 'HTTP/1.1 301 Moved Permanently' );

Сервер выполнил скрипт с ошибкой

header( 'HTTP/1.1 500 Internal Server Error' );

Если требуется перенаправить на другой url

Перенаправление на указанный адресу

header( 'Location: http://www.ru/' );

Перенаправление на указанный адрес с задержкой в 5 секунд

в принципе это калька HTML тега
<meta http-equiv="refresh" content="5;http://www.ru/ />

header( 'Refresh: 5; url=http://www.ru/' );

Заголовки кодировки и языка

Содержимое страницы использует язык:

header( 'Content-language: en' ); // en = English

Как поменять кодировку

header('Content-Type: text/html; charset=utf-8');

Модификация заголовков для управления контентом

header( 'Content-Type: application/octet-stream' );
header( 'Content-Disposition: attachment; filename="example.zip"' );
header( 'Content-Transfer-Encoding: binary' );

Установка content type

header('Content-Type: text/plain'); // plain text file
header('Content-Type: image/jpeg'); // JPG picture
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation

Иные манипуляции с заголовками

как средствами php изменять header для поисковых роботов

Содержимое страницы последний раз изменялось

header( 'Last-Modified: '.gmdate( 'D, d M Y H:i:s', ( time() - 60 ) ).' GMT' );

Длинна содержимого страницы

header( 'Content-Length: 2048' );

Отключение кеширования страницы:

header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
header( 'Expires: Mon, 1 Apr 2001 01:02:03 GMT' );
header( 'Pragma: no-cache' );