После перемещения моего веб-сайта на веб-хостинг, использующий LiteSpeed, кажется, что заголовок PHP игнорируется.
Я пробовал эти варианты:
$s = "HTTP/1.1 404 Not Found";
$s = "HTTP/1.0 404 Not Found";
$s = "Status: 404 Not Found";
$s = $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found';
с последующим
header($s)
Но в LiteSpeed все это, похоже, игнорируется.
НОТЫ:
Кроме того, на обоих сайтах я отключил кеширование LiteSpeed в моем файле .htaccss.
<IfModule LiteSpeed>
RewriteRule .* - [E=Cache-Control:no-cache]
</IfModule>
Проблему можно продублировать, создав простой
файл test.php, подобный этому
<?php
$s = $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found';
header($s);
echo 'test';
?>
А затем попробуйте запрос тест? id = 2
NotePad ++ был настроен на использование «Кодировать с UTF8», а не «Кодировать с UTF8 без спецификации»
Это означало, что некоторые файлы включали «невидимую» ведущую спецификацию.
Я проверял HTTP-запрос и ответ в режиме разработчика-браузера, но там спецификация была невидимой.
...
header () в PHP (конечно) не будет работать, если вы уже выводите что-нибудь перед заголовками
...
Я подозреваю, что причина, по которой у меня никогда не было этой проблемы с Apache, заключается в том, что она автоматически исправляется
В большинстве случаев LSWS ведет себя так же, как apache.
Если у вас есть root-доступ по ssh к серверу или панели управления WHM, вы можете попробовать переключаться между apache и LSWS, чтобы увидеть, ведут ли они себя одинаково.
переключиться на apache: /usr/local/lsws/admin/misc/cp_switch_ws.sh переключить apache на LSWS /usr/local/lsws/admin/misc/cp_switch_ws.sh lsws
Если это так, вам может потребоваться проверить свой PHP-код или правила перезаписи, чтобы увидеть, где не так.
Если Apache и LSWS ведут себя по-разному, вы можете зарегистрировать заявку.