可能重复:
PHP 已发送的标头
我网站的主 URL 将所有访问者重定向到本地子页面,我使用freegeoip.net和 PHP 来实现这一点:
<!DOCTYPE html>
<html>
<head>
<title>MLP Today</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="google-site-verification" content="*snip*" />
<?php
$csv = str_getcsv(file_get_contents('http://freegeoip.net/csv/'));
$geoloc = strtolower($csv[1]);
if ($geoloc == 'hu' ||
$geoloc == 'ro'){
header("Location: hu/");
}
else if($geoloc == 'nl' ||
$geoloc == 'be' ||
$geoloc == 'de' ||
$geoloc == 'sr' ||
$geoloc == 'au'){
header("Location: de/");
}
else {
header("Location: en/");
}
?>
<link rel="icon" type="image/png" href="img/favicon/favicon.png">
</head>
<body>
</body>
</html>
但是,当从我的本地 Apache 服务器加载站点时,我得到一个错误,说:
警告:无法修改标头信息 - 标头已由 D:\DJDavid\Dokumentumok\Dropbox\Web\Today\index 中的(输出开始于 D:\DJDavid\Dokumentumok\Dropbox\Web\Today\index.php:7)发送。第 13 行的 php
第 13 行是:header("Location: hu/");
我之前读过一些答案,但所有这些都是指实时网站,而不是 Apache Web-Servers。有人说我必须在 PHP 代码之前和之后删除所有内容,但这并没有帮助。此外,如您所见,我没有输出或返回任何内容,而这是导致此问题的第二大常见原因。第三个建议是使用ob_start()
,但这也无济于事。
问题是,它在网络主机上完美运行,但当我使用localhost
(本地服务器)在上线前预览更改时却不行。
我猜我必须改变一些东西,httpd.conf
但我不知道是什么。