$ _SERVER ['HTTP_HOST']无法识别

时间:2014-01-17 12:49:36

标签: php apache http-status-code-301

我有这个简单的语句,检查$_SERVER['HTTP_HOST']是否返回变量$C['ST__URL']的相同值。如果不是,它会进行301重定向。 今天我们遇到了停机,因为$_SERVER['HTTP_HOST']$C['ST__URL']变量不匹配。

停机时间是由强制301重定向进入连续循环引起的,因此原因必须是$_SERVER['HTTP_HOST']未被识别。

$C['ST__URL']已正确填写,所以我想知道哪个可能导致停机? Apache临时问题? DNS区域中的其他配置是什么?

$url = parse_url($C['ST__URL']);

    if($_SERVER['HTTP_HOST']!=$url['host']) {
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: '.$C['ST__URL'].$_SERVER['REQUEST_URI']);
    }

1 个答案:

答案 0 :(得分:0)

我首先检查apache请求日志。

你说“原因必须是$ _SERVER ['HTTP_HOST']未被识别出来。”但你根本不知道那个,是吗?为什么不?你没有任何记录。既然您知道这是一个问题,请设置为在它再次发生时记录它:

if($_SERVER['HTTP_HOST']!=$url['host']) {

    error_log("Invoking redirect: server host $_SERVER['HTTP_HOST'] mismatch with url $url.\r\n"),3,"/var/log/http301redirect.log");

    header('HTTP/1.1 301 Moved Permanently');
    header('Location: '.$C['ST__URL'].$_SERVER['REQUEST_URI']);
}

这只是一个示例消息,您可能希望对日志消息进行日期戳和自定义。