【问题标题】:Redirect a Page to Another Page for 10 Seconds Then Redirect Back Again to Original URL将一个页面重定向到另一个页面 10 秒,然后再次重定向回原始 URL
【发布时间】:2019-11-21 04:28:21
【问题描述】:

我想暂时将用户重定向到一个广告页面,然后在 10 秒后再次将他们返回到他们想要的页面。

我不知道该怎么做,因为我对 PHP 或 Java 了解不多。所以请给我完整的重定向代码并指导我把代码放在哪里。

我在第一页使用$_GET 参数,所以假设我的网址如下:

mydomain.net/games/?game=PUBG+Mobile&Rating=5
mydomain.net/games/?game=Apex+Legends&Rating=4
mydomain.net/games/?game=GTA+5&Rating=4.5

我希望每个 url 都重定向到 ads.php 页面,然后在 10 秒后重定向回原始 url,并且不再重定向。

【问题讨论】:

  • java != javascript
  • 它并不是那样工作的。当您从一个页面重定向到另一个页面时,文档对象模型会重新加载,并且新页面上的任何脚本都会执行。如果新页面重定向回原始页面,您将陷入重定向循环,除非您提供某种 cookie 或参数来告诉第一页不要再次重定向。我会考虑在原始页面中使用模式、弹出窗口或 iframe,并在 10 秒后将其从该页面中删除。
  • 谢谢@CaitLAN Jenner 的回复,但我无法在 iframe 或模态中显示 Google Ads,这违反了 google 规则,所以我正在寻找一种方法将我的流量从网站 1 重定向到网站 2。你能告诉我吗我如何使用参数或 cookie 来告诉首页不要再次重定向?

标签: javascript php redirect phpinfo


【解决方案1】:

@Maurice 提到了如何在 JavaScript 中执行 HTTP 重定向。但是,如果您在两个页面上都这样做,那么您会发现自己处于无限重定向循环中,这是非常糟糕的。为了扩展这个答案,这里有一些 PHP 可以通过使用查询字符串参数动态禁用原始页面的第二个重定向(请参阅https://en.wikipedia.org/wiki/Query_string)。

首先,您需要在文档顶部包含以下 PHP 代码。如果你有其他的 PHP 代码,只要把这段代码的里面放在它下面。这将接受重定向查询字符串。

<?php

$redirect = 1

if (isset($_GET['redirect'])) {
    $redirect = htmlspecialchars($_GET["redirect"]);
}

?>

现在,在文档的后面(最好在正文末尾或头部内),您需要使用 PHP 动态生成 JavaScript。

<?php
if ($redirect == 1)
{
    echo "<script>";
    echo "// Simulate an HTTP redirect:";
    echo "setTimeout(function() { // timer";
    echo "window.location.replace(url);";
    echo "}, 10000); // 10000 ms = 10 seconds";
    echo "</script";
}
?>

请注意,您需要将此处的“url”替换为适当的 url,这可能需要正确转义引号(请参阅https://www.php.net/manual/en/function.addslashes.php

最后一点,您需要在重定向回原始页面的页面上适当地设置“重定向”查询字符串。你可以这样做:

mydomain.net/games/?game=PUBG+Mobile&Rating=5&redirect=0

根据请求更新 在第二页上,您不需要上面提到的 PHP 逻辑。您只需要一个 JavaScript 10 秒重定向。这样的事情应该可以工作。

<script>
url = "mydomain.net/games/?game=PUBG+Mobile&Rating=5&redirect=0";

// Simulate an HTTP redirect:
setTimeout(function() { // timer
window.location.replace(url);
}, 10000); // 10000 ms = 10 seconds
</script>

请注意,这里我使用了静态 URL。如果您希望此 URL 是动态的,您可以使用与我提到的解决无限重定向完全相同的方法。也就是说,将原始URL作为查询字符串参数传递给广告页面,通过PHP在广告页面上解析,在上面的代码中使用PHP动态创建url。

【讨论】:

  • 你能给我第二页的代码吗(重定向一个)。我的意思是如何在第二页上为从第一页重定向的所有 URL 设置 redirect=0?
  • 先试试这个(使用静态 URL),看看它是否适合你。然后考虑如何使用相同的方法从广告页面动态重定向,方法是向它发送一个 returnURL 参数,您可以使用我提到的用于解决无限重定向问题的相同方法解析和动态生成该参数。祝你好运!
【解决方案2】:

首先:Java !== Javascript

Java 和 Javascript 很相似,就像 Car 和 Carpet 很相似。

来源:https://stackoverflow.com/a/245068/3119231

-

要将用户重定向到您可以使用的另一个位置:

// Simulate a mouse click:
setTimeout(function() { // timer
    window.location.href = url;
}, 10000); // 10000 ms = 10 seconds

// Simulate an HTTP redirect:
setTimeout(function() { // timer
    window.location.replace(url);
}, 10000); // 10000 ms = 10 seconds

把它放在你喜欢的文档中。

来源:https://www.w3schools.com/howto/howto_js_redirect_webpage.asp

奖励 (CaitLAN Jenner):您需要防止文档在无限循环中重定向。您的访问者每 10 秒就会被从一个站点推送到另一个站点。

【讨论】:

  • 这是真的,但它并没有解决向后重定向的问题。正如我在另一条评论中提到的,将此代码放在两个页面上会导致无限重定向循环,除非在原始重定向之后将 cookie 或参数设置为禁用此代码。由于 OP 使用 PHP,最简单的解决方案可能是查询字符串中的 ?redirect=False 参数。
猜你喜欢
  • 2011-06-02
  • 1970-01-01
  • 2023-02-02
  • 2015-08-14
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
相关资源
最近更新 更多