我有一个移动网站和一个普通网站。在移动设备上,它在普通网站上检测到是移动设备并重定向到移动网站。 我还可以通过添加查询字符串从移动网站返回到普通网站: no_redirect =真
这样JS就不会再次执行移动检测代码了。
我的这个仅用于我的主页(移动检测),因此当我导航到我的普通网站中的其他页面时,QueryString不再存在。一旦我回到主页,我将再次被重定向到移动网站(没有QueryString,所以移动检测开始了)。
移动网站上的正常网站示例网址: http://www.mysite.com/default.aspx?no_redirect=true
我正在寻找一种方法,一旦设置/存在,就将QueryString no_redirect = true添加到所有页面。只有当我从我的移动网站导航回标准网站时才会发生这种情况。这样可以避免我每次访问主页时都需要从手机来回切换。
有人为此提出任何想法或解决方案。
提前谢谢
答案 0 :(得分: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
答案 1 :(得分:1)
由于您正在使用asp.net,为什么不使用IIS提供的功能?
IIS提供了一个Url Rewrite模块,对于这种情况来说,这是一个完美的方法。
你是否想要将你的变量附加到网址,这取决于你,我强烈建议你反对它,因为人们倾向于为网址添加书签并分享这些书签。某人最初共享在不同类型的设备上使用的链接的可能性非常大,并且导致糟糕的用户体验。
stackoverflow中已经有一个问题可以解决你所面临的问题。
IIS URL Rewrite rule for mobile with "nomobile" cookie
在将请求传递给ASP.NET管道之前,规则的处理在服务器上进行,这意味着您不需要“初始”加载任何页面然后重定向。这与您目前提出的解决方案完全相反。
查看我链接的问题,如果您真的希望附加查询字符串,只需在web.config上将appendQueryString属性更改为true。
答案 2 :(得分: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);
});
});