通过Htaccess自定义405错误消息在发送PHP标头时不显示

时间:2014-04-02 11:41:03

标签: php .htaccess http-headers http-status-code-405

我阻止直接访问以下文件,方法是返回405,除非用户使用以下代码提交表单:

<?php
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("HTTP/1.0 405 Method Not Allowed"); 
    exit(); } else {

if(isset($_POST['a'])){

    switch ($_POST['a']) {

    case "1":
        $var = "hey";
        break;

    case "2":
        $var = "now";
        break;

    default:
        $var = "other";
    }
  }
}
?>  
<!doctype html>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
something
</body>
</html>

由于Chrome和FF显示的是空白页而不是错误(即使它们显示的是404而不是空白页,以防我键入错误的网址,所以我不确定这是如何工作的),我想要创建一个自定义405消息,所以我已将此行添加到我的.htaccess:

ErrorDocument 405 /custom-msg.php

然而,我仍然得到一个空白页而不是自定义消息。 这有什么不对?

1 个答案:

答案 0 :(得分:1)

Apache没有设置PHP设置状态代码的操作错误文档。与404问题类似,请尝试:

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.0 405 Method Not Allowed"); 
include 'custom-msg.php';
exit(); }