0

我有一个移动网站和一个普通网站。在移动设备上,它在正常网站上检测到移动设备并重定向到移动网站。我也可以通过添加查询字符串从移动网站返回到普通网站:no_redirect=true

这样 JS 就不会再次执行移动检测代码了。

我的主页只有这个(移动检测),所以当我导航到我正常网站中的其他页面时,QueryString 不再存在。一旦我回到主页,我将再次被重定向到移动站点(没有 QueryString,所以移动检测启动)。

移动网站到普通网站的示例 URL: http ://www.mysite.com/default.aspx?no_redirect=true

我正在寻找一种在设置/存在后将 QueryString no_redirect=true 添加到所有页面的方法。这只发生在我从移动网站导航回标准网站时。这将避免我每次访问主页时都需要从移动设备到正常状态来回切换。

有人对此有任何想法或解决方案。

提前谢谢

4

3 回答 3

1

感谢您的快速回复!但我让它像这样工作。

也许人们想知道为什么我的主页上只有移动检测?这是因为它是一个响应式网站,但最初我想展示移动网站,因为它在 3G 上加载速度非常快。当然,当有人输入另一个 URL 时,它只会立即显示响应式网站。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

If Request.QueryString("no_redirect") IsNot Nothing AndAlso Not String.IsNullOrEmpty(Request.QueryString("no_redirect").ToString()) Then
Dim cookie As New HttpCookie("no_redirect")
    cookie.Value = Request.QueryString("no_redirect").ToString()
    cookie.Expires = DateTime.Now.AddMinutes(10)
    Response.Cookies.Add(cookie)
Else
    If Request.Cookies("no_redirect") IsNot Nothing Then
        Response.Redirect("/default.aspx?no_redirect=true")
    End If
End If
End Sub
于 2013-02-14T23:07:40.373 回答
1

既然您使用的是 asp.net,为什么不使用 IIS 提供的功能呢?

IIS 有一个 Url Rewrite 模块,非常适合这种情况。

是否要将变量附加到 url,这取决于你,但我强烈建议不要这样做,因为人们倾向于为 url 添加书签并共享这些书签。某人最初共享在不同类型的设备上使用的链接的可能性非常大,并导致糟糕的用户体验。

stackoverflow 中已经有一个问题可以解决您面临的问题。

带有“nomobile”cookie 的移动设备的 IIS URL 重写规则

在请求被传递到 ASP.NET 管道之前,规则的处理发生在服务器上,这意味着您不需要“最初”加载任何页面然后重定向。这与您目前提出的解决方案完全相反。

请参阅我链接的问题,如果您真的希望附加查询字符串,只需在 web.config 上将 appendQueryString 属性更改为 true。

于 2013-02-15T06:37:53.667 回答
0

我建议为此使用 Session 变量,而不是尝试修改每个链接。但是,这里有一些可能有帮助的 jquery

$(document).ready(function() {
    $('a').each(function(i,o) {
        var href = $(o).attr('href');
        if (href.indexOf('?') > 0) href = href + '&no_redirect=true';
        else href = href + '?no_redirect=true';
        $(o).attr('href', href);
    });
});

http://jsfiddle.net/cEKeK/

于 2013-02-14T22:46:20.637 回答