Intereting Posts
Являются ли константы такими же злыми, как глобальные переменные и одиночные? Параметры привязки PHP по умолчанию и значение по умолчанию Я хочу удалить% 20 ​​из url в php .htaccess url переписать с переменными Как именно работает if (переменная $)? Как получить и отобразить самые большие значения из базы данных? Несколько типов пользователей в Laravel 4 загрузка нескольких файлов изображений в php mysql gallery Facebook API сообщение: Как получить больше thumbnail? Эффективный способ проверить, находится ли текущая дата между двумя датами (годы не имеют значения) 1-1 Система чата с использованием PHP / MySQL API TTS Google: кодирование запроса GET с помощью PHP Как настроить параметры прокси-сервера HTTP в PHP? Как использовать веб-службу WCF, которая использует выборочную проверку имени пользователя на странице PHP? Добавить, обновить и удалить записи базы данных с использованием jQuery datatables

Перенаправление заголовка PHP не работает

Я знаю, что это было рассмотрено раньше, но я не могу найти ответ на это,

Я всегда использовал это;

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"); ?>