redirect — уже отправлены заголовки, имеющие дело с устаревшим кодом

Я видел этот вопрос тысячу раз, но я не видел ответа на следующую ситуацию. Может быть, один уже существует?

Что-то, в чем я убедился:

  • Есть НЕТ пространства вокруг <?php а также ?>,
  • Там нет эхо-заявлений.
  • Здесь нет операторов печати или каких-либо других «операторов выходных данных»

Там является одна проблема:

Код, о котором идет речь, «включается» в «страницу макета», которая вызывает проблему, может, кто-нибудь подскажет, как обойти это?

Так вот код, я не писал это, я просто поддерживаю его.

$pagetitle = $_SERVER['REQUEST_URI'];
switch ($pagetitle) {
...
case "/locations.php?l=8" :
echo '<title>Mississauga West, Canada Winemaking - Vinbon</title>';
break;
...
}

В этом случае я попытался сделать следующее, зная, что это, вероятно, не сработает из-за оператора echo.

case "/locations.php?l=8" :
ob_start();
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.New-Website.com");
die();
ob_end_flush();
break;

Теперь я знаю, что вы, ребята, заявили в некоторых ответах, чтобы не указывать эхо выше, поскольку это может вызвать проблемы. Я предполагаю ob_start() бы прояснить это?

Как видите, это должен быть редирект 301.

Теперь этот кусок кода находится в файле с именем: inc_meta.php что тогда включены (не обязательно) в файле с именем layer01.php,

При запуске он вызывает следующие «предупреждения»:

Warning: Cannot modify header information - headers already sent by (output started at /home/content/46/11552446/html/layout/layer01.php:5) in /home/content/46/11552446/html/layout/layer01.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at /home/content/46/11552446/html/layout/layer01.php:5) in /home/content/46/11552446/html/layout/layer01.php on line 11

Теперь линия 5 — это то, где мы делаем <? include inc_meta.php ?> и layer01.php — это не более чем HTML-файл.

Линия 10 — это пробел над <body> тег и строка 11 является <body> тег.

Я не могу использовать JavaScript, потому что это должно быть перенаправление 301 для этого места. У кого-нибудь есть какие-либо идеи?

Итак, я попытался удалить выражение echo, так как решил, что вы, ребята, заявите, что это проблема

Теперь я получаю:

Warning: Cannot modify header information - headers already sent by (output started at /home/content/46/11552446/html/layout/layer01.php:5) in /home/content/46/11552446/html/layout/inc_meta.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at /home/content/46/11552446/html/layout/layer01.php:5) in /home/content/46/11552446/html/layout/inc_meta.php on line 52

строки 51 и 52 относятся к:

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.New-Website.com");

0

Решение

Проблема заключалась в том, что в файле php / html я не знал, что вам нужно было включить этот файл выше <DOCTYPE ... > а также <html> теги. Как только это было включено там, проблема исправила себя.

Итак, в моем случае:

<? include('inc_meta.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
....

Вместо того, что было:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<? include('inc_meta.php'); ?>
...
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]