如何使php页面返回503错误(或任何非200错误)

2022-08-30 11:38:02

一位前开发人员用PHP编写了客户端 - 服务器api。它只是以非常简单的方式使用post/response将消息作为xml发送。问题是,即使存在错误(例如:传入服务器端的无效参数),我们也会得到一个HTTP 200响应,其中包含这样的页面。

<h4>Unknown error!</h4>

在 firebug 中,我可以看到实际的 HTTP 响应是 200。当我们在php代码中编程地检测到这样做是合适的时,我们如何发送不同的响应(即:503)。


答案 1

使用PHP的函数发送代码(以及HTTP版本和您需要的任何其他标头)。更完整的信息:header

何时发送 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>

推荐