2015-06-13 32 views
1

让我们了解的情况:发送http-404响应但不发送IIS服务器中设置的自定义错误页面| PHP

: - 使用PHP上的IIS 8.5 Web应用程序

: - 自定义错误页设置为404以下的网络配置snippt:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/path/404.php" responseMode="ExecuteURL" /> 
</httpErrors> 

: - 这是工作的不存在的页面和IIS也返回这个404.php,如果我在任何PHP页面设置标题为404(通过header('HTTP/1.0 404 Not Found', true, 404); die;)。

问:

现在,我婉在一些PHP文件发送404 HTTP响应代码在任何特定的条件下,可以说,如果数据库返回0行。我可以通过设置上面的标题来做到这一点,但也会返回自定义错误页面。 有没有什么办法可以发送404代码并告诉IIS发送响应,而不用发送自定义错误页面呢?

问题:

: - 如果我删除自定义错误页,并把header()die()的内容,那么它会满足我的要求,但IIS将无法投放在页面上自定义错误实际上不存在。

: - 我正在使用URL重写,因此无法使用基于location标记的多个自定义错误页面,并且不希望重定向到任何建议的不同URL。

回答

0

由于我有一个棘手的解决方案/想法,我想分享一下。但如果有人有更好的解决方案,我欢迎并感谢他们。

招数/解决方案/理念:

第1步: -从任何现有的PHP页面设置session variable之前header('HTTP/1.0 404 Not Found', true, 404);和变量放在一个特定的信息(我建议使用不同整数代码作为不同php页面的会话变量值)然后设置标题并致电die(); or exit;

第2步: -之后,IIS或任何其他服务器将执行自定义错误页面。 SO,在自定义错误页面检查会话变量和回显内容如下...

........ 2a - 如果会话变量未设置,则显示“正常错误内容与主菜单 “等。

........ 2b - 如果设置了会话变量,则检查值并根据值显示您想向用户显示的不同内容,如:”未找到数据消息和搜索面板

注:在自定义错误页面的编码再次需要设置404头,并且您可以根据上面的技巧中的会话变量的值发送不同的错误代码。

相关问题