Подтвердить что ты не робот

Как заставить php-страницу вернуть ошибку 503 (или что-то не-200)

Бывший разработчик написал или клиент-сервер api в PHP. Он просто отправляет сообщения как xml, используя пост/ответ очень упрощенным способом. Проблема в том, что даже при наличии ошибки (например: неверные аргументы, переданные на сервер) мы получаем ответ HTTP 200 со страницей, подобной этой

<h4>Unknown error!</h4>

В firebug я вижу, что ответ HTTP на самом деле равен 200. Как мы можем отправить другой ответ (то есть: 503), когда мы программно обнаруживаем в нашем php-коде, что это целесообразно сделать.

4b9b3361

Ответ 1

Используйте функцию PHP header для отправки кода (вместе с версией HTTP и любыми другими заголовками, которые вам нужны). Более полная информация:

Когда отправлять код статуса HTTP?

http://php.net/manual/en/function.header.php

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 300');//300 seconds

Ответ 2

Я работал на сайте, который был взломан, и ему нужно было использовать HTACCESS для этого.

<IfModule mod_rewrite.c>

 RewriteEngine on

 # let this (iescaped) IP address see the real site:
 # RewriteCond %{REMOTE_ADDR} !^123.45.67.89

 RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]

 RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif|css|js) [NC]

 RewriteRule .* /maintenance.php [R=503,L]

</IfModule>

Ответ 3

В верхней части вашего script (или действительно, прежде чем какой-либо вывод будет отправлен как ответ):

<?php header("HTTP/1.0 404 Not Found"); или любой другой код статуса HTTP.