php脚本重定向代码问题

时间:2010-04-29 09:46:34

标签: php redirect

我从搜索引擎检测到我的网站工作者的搜索词后,我正在使用php脚本进行重定向。

我的重定向代码工作正常

但对于一些关键词我会留在同一页面。对于那些代码行,我在那些页面中收到了警告信息。

Warning:  headers already sent 
          (output started at /home/friendsj/public_html/index.php:2) in
          /home/friendsj/public_html/index.php on line 20

下面是我在该页面中使用的代码

$ref=$_SERVER['HTTP_REFERER'];

if(strstr($ref,"test")){ 
  $url="http://www.howtomark.com/robgoyette.html";
}
else if(strstr($ref,"mu+word+gmail")){
    $url="http://www.howtomark.com/marketbetter.html";
}
else{
  if(strstr($ref,"how+to+market+better")){
  }    
}

if($url !=""){
  header("Location:$url");
}

4 个答案:

答案 0 :(得分:1)

重定向是通过设置HTTP标头来完成的,正如使用header()函数所暗示的那样。这意味着您只能在开始文档输出之前重定向。无论你在第2行开始打印什么,都可以在以后再做; - )

答案 1 :(得分:0)

删除在index.php第二行开始的所有输出

答案 2 :(得分:0)

如果您正在使用Header功能,则在调用该函数之前不允许输出内容。

在你的情况下,你在第2行写了关于index.php输出的内容。

一个糟糕的解决方法是使用输出缓存函数ob_start。 但这不是一个真正的解决方案。

答案 3 :(得分:0)

试试这个

<?php ob_start();
$ref='some text goes here';

if(strstr($ref,"test")){ 
  $url="http://www.howtomark.com/robgoyette.html";
}
else if(strstr($ref,"mu+word+gmail")){
    $url="http://www.howtomark.com/marketbetter.html";
}
else{
  if(strstr($ref,"how+to+market+better")){
  }    
}

if(isset($url) && !empty($url)) {
  header("location:$url");
}
ob_flush();
?>