我有这个简单的语句,检查$_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']);
}
答案 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']);
}
这只是一个示例消息,您可能希望对日志消息进行日期戳和自定义。