【问题标题】:how to redirect to mobile site while still leaving the option open to view desktop version如何重定向到移动网站,同时仍然保持选项打开以查看桌面版本
【发布时间】:2013-06-22 06:58:04
【问题描述】:

我正在寻找一种将移动浏览器重定向到我网站的移动特定版本的方法。我的问题是我还需要在移动版本中提供一个链接,允许用户根据需要查看桌面站点。

我可以基于浏览器进行重定向,但链接到主站点只会循环回移动设备。

我不能使用会话变量,因为我的登录系统会破坏会话数据,从而导致用户在注销时返回移动站点。

我曾考虑使用重定向脚本作为单独桌面主页的索引页面,但这需要重新构建我的桌面站点并破坏 cms。我也不确定这会对搜索引擎评级产生什么影响。

任何人都可以用任何其他好的方法来处理这个问题,还是我必须硬着头皮重新构建我的桌面网站?

【问题讨论】:

  • 为什么不直接使用@media 查询?
  • 如果用户点击查看桌面版本,则设置一个cookie。在自动重定向之前检查它
  • 一种选择是只使用 GET 参数 ?forcedesktopversion=1 - 如果已设置,请避免自动重定向到移动版本。 (但不要忘记,您必须将其动态附加到所有内部链接。)
  • @CBroe 是的,我也想过这个问题,但是如果他们离开然后回来(关闭+重新打开)就不会保存,就像你说的那样,当他们点击链接时必须附加
  • 要检测用户代理和重定向,我建议看看this、this和detectmobilebrowsers.com。

标签: php mobile cross-browser


【解决方案1】:

不!有一个非常简单的方法。您可以通过这种方式检查用户访问的最后一页: document.referrer
如果引用者是移动页面以外的任何网站,则将用户发送到移动页面,如果是移动页面,那么您知道他们点击了“重定向到桌面版本”链接。

【讨论】:

  • 好主意,但用户每次通过入站链接时都必须重新强制使用桌面版本。
  • 好主意,在我的情况下,桌面版本所需的重建将是一个问题,但我当然可以看到这将是一个可行的解决方案的场景。
【解决方案2】:

在退出页面(会话数据被破坏的地方),只需检查 $_SESSION['mobile'] 或某个变量名称是否设置为 1。如果设置为 1,则重新启动会话并在新会话中仅将此值设置为 1,然后再重定向到主页。

【讨论】:

    【解决方案3】:

    当用户强制查看发送 get 参数的桌面版本时,您应该设置一个 cookie(不是会话 cookie),然后在您检测到浏览器以重定向到移动版本的块中检查它的存在。 基本上(伪代码):

    # set the cookie if the user want to see the desktop version
    if GET[force-desktop-version]
       set_cookie(force-desktop-version = 1)
    end
    
    # check the cookie and the browser before redirecting
    if NOT get_cookie(force-desktop-version) and mobile_browser_used 
       redirect_to the_mobile_version
    end
    

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多