前开发人员在PHP中编写或使用客户端 - 服务器api。它只是以非常简单的方式使用post / response将消息作为xml发送。问题是即使出现错误(例如:传递到服务器端的无效参数),我们也会得到一个带有这样一个页面的HTTP 200响应
<h4>Unknown error!</h4>
在firebug中,我可以看到实际的HTTP响应是200.当我们在PHP代码中以编程方式检测到这样做时,我们如何发送不同的响应(即:503)。
答案 0 :(得分:78)
使用PHP的header
函数发送代码(以及HTTP版本和您需要的任何其他标头)。更完整的信息:
When to send HTTP status code?
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
答案 1 :(得分:4)
我在一个遭到黑客入侵的网站上工作,不得不使用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>
答案 2 :(得分:2)
在你的脚本之上(或者实际上,在任何输出作为响应发送之前):
<?php header("HTTP/1.0 404 Not Found");
或任何其他HTTP status code。
答案 3 :(得分:0)
可以在这里找到实现这一目标的好课程:http://www.krisjordan.com/php-class-for-http-response-status-codes/ - 像这样使用它(在任何其他输出之前):
<?php header(StatusCodes::httpHeaderFor(503)); ?>