javascript重定向移动设备(如果referer不是我的域)

javascript重定向移动设备(如果referer不是我的域),javascript,mobile,replace,user-agent,referrer,Javascript,Mobile,Replace,User Agent,Referrer,由于这里无法解释的原因,我想使用javascript将访问者从我的索引页面重定向到我的移动子域,如果他们是使用userAgent的特定设备 我的问题是,移动站点有一个“查看完整站点”链接,可以将您发送到索引页面。这将创建一个循环条件 以下是我正在努力实现的目标 如果引用的url不是我自己的域并且用户代理匹配,则重定向到移动子域 我很接近,但错过了一些东西 if (document.referrer != "mydomain.com" &&

由于这里无法解释的原因,我想使用javascript将访问者从我的索引页面重定向到我的移动子域,如果他们是使用userAgent的特定设备

我的问题是,移动站点有一个“查看完整站点”链接,可以将您发送到索引页面。这将创建一个循环条件

以下是我正在努力实现的目标


如果引用的url不是我自己的域并且用户代理匹配,则重定向到移动子域


我很接近,但错过了一些东西

    if   (document.referrer != "mydomain.com" &&
            (navigator.userAgent.match(/iPhone/i)) ||
            (navigator.userAgent.match(/iPod/i)) ||
            (navigator.userAgent.match(/iPad/i)) ||
            (navigator.userAgent.match(/Googlebot-Mobile/i))); {
        location.replace("https://m.mydomain.com");
        }

你的情况有点滑稽,你有一个分号,你不应该在那里

引用条件将被忽略,因为它与其他条件正好相反。把所有的OR放在括号里,它应该可以工作

if   (document.referrer != "mydomain.com" &&
            ((navigator.userAgent.match(/iPhone/i)) ||
            (navigator.userAgent.match(/iPod/i)) ||
            (navigator.userAgent.match(/iPad/i)) ||
            (navigator.userAgent.match(/Googlebot-Mobile/i)))) {
        location.replace("https://m.mydomain.com");
        }
有一个链接是一个好主意,因为它表明你知道你永远不能100%地猜测用户(和设备识别)

正如mplungjan所说的,依赖推荐人不是很可靠。我建议您存储一些“会话”信息,记录用户在完整站点上查看的意图。这样可以覆盖您的开关


大多数移动浏览器都支持会话存储,您可以使用它来跟踪这一点(例如
sessionStorage['site']='full'
),尽管我在iOS和私有模式下遇到了问题(在私有模式下不存储任何内容)。

您永远不能依赖referer。。。我之所以选择推荐人路线,是因为我不必依赖移动设备接受cookies,也不必私下(就像我的iPhone一样),我愿意接受建议、争论和想法。我想,既然我说的是任何买我推荐人的东西,那就很容易理解了。如果没有推荐人没什么大不了的。。。它仍然必须通过userArgent。“强健”是什么意思?