【问题标题】:How can I redirect users to different website variant based on last used variant?如何根据上次使用的变体将用户重定向到不同的网站变体?
【发布时间】:2019-10-05 13:27:47
【问题描述】:

我的网站有 2 个变体(例如 A 和 B)。 它们存储在 /a/ 和 /b/ 的服务器上。

在我的主页 (/index.html) 上,我想让用户选择(主要是一个按钮)访问哪个变体。

然后,我想将该变量设置为用户的默认变量,这样,下次用户尝试访问 index.html 时,他/她将被重定向到上次访问的变量。

两种变体都有切换到另一个变体的开关。因此,如果用户切换到另一个(比如从 A 切换到 B),我想将新的 (B​​) 设置为默认值,以便用户在下次他/她时被重定向到新的 (B​​)访问/index.html。

重定向应该只在 /index.html 页面上起作用,因此如果用户通过直接输入 URL 来访问特定于变体的网页,他们不会被重定向。但是,偏好应该会改变,即如果用户上次访问变体 A 而现在使用变体 B 的 URL,则下次他/她访问 /index.html 时,他/她应该被重定向到 B .

我在胡乱猜测,cookie 和 JavaScript 可以帮助我实现这一目标。

谁能告诉我是否以及如何实现这一目标?

【问题讨论】:

    标签: javascript html web redirect cookies


    【解决方案1】:

    不确定 JavaScript,但是,我通过 PHP 实现了它:

    /a/ 中,我创建了一个 index.php 文件。它包含以下代码:

    <?php
    setcookie("chosen_variant","a",time()+86400*365,"/","domain.tld",1);
    ?>
    <html>
    ...
    </html>
    

    setcookie()函数有以下参数:

    "chosen_variant" 是 cookie 的名称, "a" 是值, time()+86400*365 表示有效期为 365 天, "/" 表示对整个域都有效, "domain.tld" 表示对 domain.tld 的所有子域都有效, "1" 表示仅在安全连接上传输。

    所以,当/a/index.php第一次在浏览器中加载时,它会设置一个名为chosen_variant的cookie,其值为a,有效期为365天,对我的整个域都有效,并且所有子域,并且仅在安全连接上传输。

    然后,我在/b/ 中做了同样的事情。

    然后,我使用以下代码在我的网站根目录中创建了一个 index.php 文件:

    <?php
    if($_COOKIE['chosen_variant'] == "a")
     {header("Location: /a/index.php");}
    elseif($_COOKIE['chosen_variant'] == "b")
     {header("Location: /b/index.php");}
    else
     {}
    ?>
    <html>
    ...
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-15
      • 2018-12-15
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      相关资源
      最近更新 更多