【问题标题】:Redircting to a page in PHP [duplicate]重定向到 PHP 中的页面 [重复]
【发布时间】:2013-11-18 14:49:22
【问题描述】:

我正在尝试根据其引荐来源网址重定向到页面。布局是这样的

<?php
$URL_REF = $_SERVER['HTTP_REFERER'];
if($URL_REF == "url of my site") {
    header("Location: url of another site"); 
    exit();
}
else    {
    header("Location: my home page"); 
    exit();
}

?>

我收到错误消息:Cannot modify header information - headers already sent by

我必须将我的 php.ini 修改为 output_buffering = On,但我不能这样做,因为我在 hostgator 中有一个共享主机帐户。 谁能建议我现在有什么选择?我可以通过更改我的代码来做到这一点吗?如果是,比什么变化?

【问题讨论】:

  • 您需要将此代码附加到 Wordpress 的早期运行 actions 之一,以便在输出开始之前发送标题。我会选择init
  • @mario 这就是症状,但问题是 Wordpress 糟糕的架构。 wordpress.stackexchange.com 可能会更好
  • 这个问题属于wordpress.stackexchange.com
  • 向我们展示错误的下一部分。无法修改标头信息 - 标头已由...发送,它会告诉您输出标头的确切位置!
  • 也在 stanf $_SERVER['HTTP_REFERER'] 下设置了浏览器,通常是空白的,永远不能依赖。

标签: php wordpress redirect output-buffering


【解决方案1】:

尝试改用javascript

<?php
$URL_REF = $_SERVER['HTTP_REFERER'];
if($URL_REF == "url of my site") {
   ?>
   <script type="text/javascript">window.location = "http://www.yoururl.com";</script>
   <?php
}
else    {
    ?>
     <script type="text/javascript">window.location = "http://www.anotherlocation.com";</script>
    <?php
}

?>

检查参考here

【讨论】:

  • 成功了。谢谢。
【解决方案2】:
<?php
function custom_redirect() {
$URL_REF = $_SERVER['HTTP_REFERER'];
if($URL_REF == "url of my site") {
    header("Location: url of another site"); 
    exit();
}
else    {
    header("Location: my home page"); 
    exit();
}
}
add_action('init','custom_redirect');
?>

尝试将您的函数挂钩到INIT HOOK

【讨论】:

  • 这是一个不错的方法。但收到此错误:调用未定义函数 add_action()
  • 你把这段代码放在哪里了?在您主题的 functions.php 中?
  • na,我创建了一个新文件夹。通过 robots.txt 阻止它。并将整个代码放在这个新文件夹中的单独 php 文件中。此文件将包含我的附属链接,我想对 Google 隐藏它。
  • dude 把它放在你主题的 functions.php 中,add_action 不是一个 php 函数,它是一个 wordpress 函数。所以把整个代码放在你的主题functions.php中。谷歌无法阅读functions.php里面的内容
  • 好的,会这样做。谢谢。
【解决方案3】:

已经发送的标头信息是 wordpress 的常见错误,就像您提到的要重定向网站然后您必须遵循选项。

  1. 创建一个wordpress模板文件,不要在那个文件中调用header

    <?php /* Template Name:Redirect*/ ?> <?php //get_header();?> <!-- Do not un comment this function -->Write your code here Write your code here Write your code here Write your code here <?php get_footer();?>

  2. 或者你可以使用java脚本的window.location函数重定向

    <script>document.write(location.http://google.com); </script>

【讨论】:

    【解决方案4】:

    你好实际上 header("Location: 另一个站点的 url");在 wordpress 中不支持。而不是这个,你可以使用

    <?php wp_redirect( 'http://www.example.com', 301 ); exit; ?>
    

    主页只需使用&lt;?php wp_redirect( home_url() ); exit; ?&gt; 这将解决您的重定向问题。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2011-11-06
      • 2021-10-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多