使用URL变量进行PHP重定向


PHP redirect with URL variables

我对php非常陌生,正在尝试构建一个重定向,该重定向使用不同URL的参数。

一个人将访问的URL看起来像:www.website1.com/redirect.php?p=p123&r=4&s=567

每个的p、r和s都会发生变化

然后我想把它们重定向到其他网站,看起来像这样:

www.website2.com/p123.aspx?r=4&s=567

这是我到目前为止所拥有的,但它给了我一个错误"无法修改标题信息-标题已经由…发送"

<html>
   <?php
      $fpvalue  = $_GET['p'];
      $frvalue  = $_GET['r'];
      $fsvalue  = $_GET['s'];
      header("Location: http://website2.com/".$fpvalue.".aspx?r=".$frvalue."&s=".$fsvalue);

   ?>
</html>

我真的很感激对初学者的帮助。

谢谢!

当您收到"内容"(文本、html、空格、任意位置)时,无法进行重定向。在调用header()函数之前,不应该执行此操作。

正如您所看到的,在调用header()函数之前,您有一个"。

更改:

   <html>
   <?php
      $fpvalue  = $_GET['p'];
      $frvalue  = $_GET['r'];
      $fsvalue  = $_GET['s'];
      header("Location: http://website2.com/".$fpvalue.".aspx?r=".$frvalue."&s=".$fsvalue);

   ?>
   </html>

为此:

   <?php
      $fpvalue  = $_GET['p'];
      $frvalue  = $_GET['r'];
      $fsvalue  = $_GET['s'];
      header("Location: http://website2.com/".$fpvalue.".aspx?r=".$frvalue."&s=".$fsvalue);
      exit;
   ?>
   <html>
   </html>

请记住:检查"<?php"标记之前是否有另一个空格或"新行"。

当您将session_start或php标头放在其他代码(例如html)下面时,会出现错误"无法修改标头信息-标头已由…发送"那么你应该换成:

<?php
//your php codes
//....
?>
<!DOCTYPE html>
....etc.

这必须工作

此说明适用于我修复seo重定向,但您可以用于所有

示例url:http://yourdomain.com/index2.php?area=xpto

示例index2.php文件:

<?php 
$fpvalue  = $_GET['area']; 
if ($fpvalue == 'xpto') {
    header("Location: http://newurl.com/", true, 301); 
}
else if ($fpvalue == 'loren') {
    header("Location: http://otherurl.com/", true, 301); 
}   
else if ($fpvalue == '') {
    header("Location: http://otherurl.com/", true, 301); 
}?>