Я знаю, что это было рассмотрено раньше, но я не могу найти ответ на это,
Я всегда использовал это;
header("Location: http://www.website.com/"); exit();
Это всегда работало в моем текущем проекте, и внезапно он не работает ни в одном из моих браузеров
Я хотел бы выяснить проблему и исправить ее, а не использовать
echo "<script type='text/javascript'>window.top.location='http://website.com/';</script>";
У меня также включен отчет об ошибках, и он не показывает ошибок
// SET ERROR REPORTING error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE); ini_set('display_errors', TRUE);
Любые идеи, почему это не сработает?
Пытаться:
error_reporting(E_ALL | E_WARNING | E_NOTICE); ini_set('display_errors', TRUE); flush(); header("Location: http://www.website.com/"); die('should have redirected by now');
Посмотрите, что вы получаете. Вы не должны использовать ^ (xor) в вызове error_reporting (), потому что вы непреднамеренно запрашиваете все ошибки. ИСКЛЮЧАЕТ уведомления и предупреждения .. вот что такое ошибка «заголовки уже отправлены».
Редактировать:
Также попробуйте поместить flush () прямо над вызовом header ().
Попробуйте удалить пространство между местом и первым h в http.
header("Location: http://www.website.com/"); exit();
превращается в
header("Location:http://www.website.com/"); exit();
У меня была эта проблема на моем сервере WAMP.
Хотя это не должно быть проблемой, учитывая, что это описано в документации PHP. Но вы, вероятно, должны попробовать все равно. Я знаю, что это работало для меня в ряде случаев.
1) перед header(.......);
не должно быть никакого выхода (т.е. echo..
или HTML-кодов header(.......);
команда.
2) перед тегами <?php
и after ?>
Не должно быть пробела (или новой строки ).
3) ПРАВИЛО ЗОЛОТА! – файл (а также, если вы include
другие файлы), имеет UTF8 без кодировки спецификации (а не только UTF-8 ). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале вывода файла) !!!!!!!!!!!
4) Включите отчет об ошибках. И сообщите об ошибке.
5) Если перенаправление, то после header(...);
вы должны использовать exit;
6) всегда используйте 301 или 302 в ссылке:
header("location: http://example.com", true, 301 ); exit;
7) Если ни одно из указанных выше не помогает, используйте перенаправление JAVSCRIPT (не рекомендуется Google), но это может быть последний шанс …:
echo "<script type='text/javascript'>window.top.location='http://example.com/';</script>"; exit;
попробуй это. работал на меня.
echo "<meta http-equiv='refresh' content='0;url=http://www.yoursite.com'>";
Также, когда вы используете функцию заголовка, это должно быть первое, что нужно вызвать до того, как какой-либо текст (даже пробел) будет записан клиенту, так что еще раз проверьте, нет ли каких-либо пробелов до вашего вызова еще до
<?php
Это может быть странное решение, но попробуйте это, измените кодировку страницы с utf8 на ANSI, и она будет работать.
используйте любой текстовый редактор и сохраните страницу как кодировку ANSI и загрузите ее на свой онлайн-сервер.
Добавление ob_start () решило эту проблему.
Что именно происходит при посещении страницы? Вы можете попробовать Firebug или любой другой инструмент, который позволяет анализировать HTTP-заголовки и проверять, действительно ли происходит перенаправление, и действительно ли заголовок Location
присутствует.
Вы также должны убедиться, что вы перенаправляетесь на допустимое местоположение, и что в этом месте установлены правильные 404 и 500 сообщений об ошибках / страницах. Может быть, вы просто перенаправляете плохое место.
Странно, но удаление пустых строк в php сработало для меня: – \
код до:
<?php header("Location: http://www.website.com/"); ?>
код, который работал:
<?php header("Location: http://www.website.com/"); ?>
Попробуйте это (работает для меня):
echo '<script>window.location.replace("http://www.example.com")</script>';
Вместо
header("Location: http://www.example.com");
Если ваша индексная страница является html-файлом, она может не работать. Измените его на index.php и используйте этот код:
<?php header("Location: http://ea.tc"); ?>