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

ben*_*rre 36 php http

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

<h4>Unknown error!</h4>
Run Code Online (Sandbox Code Playgroud)

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

ssu*_*ube 78

使用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
Run Code Online (Sandbox Code Playgroud)

  • 为什么要对HTTP/1.1假设进行硬编码?如果客户端使用HTTP 1.0会发生什么? (8认同)
  • 我想在PHP中你可以像这样写:`$ protocol ="HTTP/1.0"; if("HTTP/1.1"== $ _SERVER ["SERVER_PROTOCOL"])$ protocol ="HTTP/1.1"; header("$ protocol 503 Service Unavailable",true,503); header("Retry-After:3600");`source:https://yoast.com/http-503-site-maintenance-seo/ (3认同)
  • 我想`标题($ _ SERVER ["SERVER_PROTOCOL"].'503服务暂时不可用');`? (2认同)

Ben*_*cot 5

我在一个被黑客攻击的网站上工作,不得不使用 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>
Run Code Online (Sandbox Code Playgroud)