Заголовок PHP() вызывает внутреннюю ошибку сервера
По какой-то причине вызов функции header() вызывает у меня внутреннюю ошибку сервера. Я использую PHP5 и широко использую mod_rewrite в этом скрипте (если это поможет). Вот код (своего рода):
<?php
include 'core/initialize.php'; // Loads the core class (and session manager class)
if($_GET['reset'] == 'true')
{
$core->Session->Visits = 0;
header('Location', 'index.html');
# header('X-Test', 'wtf'); // causes the error too :(
}
if(isset($core->Session->Visits)) $core->Session->Vists += 1;
else $core->Session->Visits = 0;
echo "Previous Visits: {$core->Session->Visits} (<a href='index.html?reset=true'>Reset</a>)";
?>
Мой файл .htaccess выглядит так:
# Start up the rewrite engine
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ navigator.php?nav=$1&%{QUERY_STRING} [NC]
1 answers
Вы используете это:
header('Location', 'index.html');
Это не тот путь header
необходимо использовать: второй параметр должен быть логическим.
И первым должно быть имя заголовка + значение.
Итак, в вашем случае что-то вроде этого:
header('Location: index.html');
Только один параметр; и имя + ':' + значение :-)
В документации есть пример:
Вторым частным случаем является заголовок "Местоположение:". Он не только посылает этот заголовок возвращается в браузер, но он также возвращает ПЕРЕНАПРАВЛЕНИЕ (302) код состояния для браузера, если только некоторые код состояния 3xx уже установлен.
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
В качестве примечания, если я правильно помню, вы должны использовать ПОЛНЫЙ абсолютный URL-адрес при использовании заголовка Location
; Я знаю, что использование относительного URL-адреса работает (почти?) во всех браузерах, но это недопустимо при чтении HTTP RFC, если я правильно помню.
В качестве второго примечания (да, ответ уже дан было принято, но, возможно, это все равно будет полезно в следующий раз :-) ) : эта "Внутренняя ошибка сервера" может указывать на то, что ваш PHP-скрипт столкнулся с какой-то ошибкой.
В этом случае вам следует проверить файл error_log
...
...Или активировать error_reporting
и display_errors
для облегчения работы - по крайней мере, на вашей машине разработки.