重定向到新页面但记住原始位置

时间:2013-11-21 12:12:00

标签: javascript php jquery redirect cookies

我想在某些条件下将用户发送到“登陆”页面,例如

if (condition) {
        window.location = "http://mywebsite.com/landingpage"
}

但我还想记住用户导航到的原始目的地,以便我可以在着陆页上放置一个重定向链接,将用户移动到原始目的地。

我知道如何用PHP做到这一点,但我完全需要JS / jQuery。我可以使用cookies,如果这让事情变得更容易。

我在想,也许是这样的:

// Condition when user moves to the page
if (condition) {
    // Set cookie with value of current page
    $.cookie('locational_cookie', window.location, { expires: 1}); 
    // Redirect
    window.location = "http://mywebsite.com/landingpage";
}

// When on the landing page, change the href of the "back" link to the original URL that is in the cookie.
$(".landingpage a.back").attr("href", $.cookie('locational_cookie'));

5 个答案:

答案 0 :(得分:4)

您可以在使用document.referrer

重定向之前获取网页的网址
var referrer =  document.referrer;
window.location = referrer;

此链接将重定向到初始页面。

答案 1 :(得分:1)

试试这个:

var pathname = window.location.pathname;
window.location = "http://mywebsite.com/landingpage?url="+pathname;

答案 2 :(得分:0)

在PHP中:

header('Location: http://mywebsite.com/landingpage?redirect_uri=' .
    urlencode($_SERVER['REQUEST_URI']));
exit();

编辑: 哎呀,你想要JavaScript。谢谢@ user2648239!快一点读一下。其他人已经用JavaScript回答了。

答案 3 :(得分:0)

我会将它发送到查询字符串上,并且还会将其编码为安全的一面。

if(condition) {
    var loc=encodeURIComponent(document.location.href);
    window.location = "http://mywebsite.com/landingpage?loc=" + loc;
    }

答案 4 :(得分:0)

以下是我如何解决它。它的作用是:如果有人阻止广告,请重定向到一个页面,解释为什么广告对您的网站很重要,然后允许用户导航回原始目的地。由于已经设置了cookie,页面只会显示一次。

// When on the landing page, change the href of the "back" link to the original URL that is in the cookie.
if ($("body").hasClass("page-id-7876")) { // Class of the landing page
    // Set link
    $("a.cookie-link").attr("href", $.cookie('locational_cookie'));
    // Remove locational cookie
    $.removeCookie('locational_cookie', {path: '/'});
    $.cookie('ads_checked', 'true', { expires: 365, path: '/' });
}

if($("#secondary ins.adsbygoogle").is(':empty') || $("#secondary ins.adsbygoogle").height() === 0 || !$("#secondary ins.adsbygoogle").is(":visible")) {
    $("#secondary ins.adsbygoogle").html('New HTML');

    if ($.cookie('locational_cookie') == null && $.cookie('ads_checked') == null) {
        // Set cookie with value of current page
        $.cookie('locational_cookie', window.location, { expires: 7, path: '/' });
        // Redirect
        window.location = "http://www.mysite.com/pagetoredirectto";
    }
}