【问题标题】:In Tritium, how can I force a link to go to the desktop site?在 Tritium 中,如何强制链接到桌面站点?
【发布时间】:2013-05-28 15:52:56
【问题描述】:

我正在使用 Moovweb SDK 移动网站,但有些部分我不想针对移动设备进行更改。如何强制这些链接指向原始桌面网站?

【问题讨论】:

    标签: moovweb tritium


    【解决方案1】:

    您可以通过告诉 tritium 您要将给定请求更改为重定向请求,然后重定向到桌面网站来做到这一点。

    在混合器 simple-mobile 版本 1.0.224 及更高版本中,有帮助函数来执行此操作:

    redirect_temporary("www.desktop.com") # 302 redirect.
    redirect_permanent("www.desktop.com") # 301 redirect.
    

    这是一个临时重定向示例,如果 URL 路径中包含“桌面”一词。

    match($path) {
      with(/desktop/) {
         redirect_temporary("www.desktop.com")
      }
      else() {
        // normal transformations.
      }
    }
    

    理想情况下,在调用 redirect_* 函数后,您不会再执行任何氚(没有任何意义,因为无论如何您都会重定向)。

    如果您已在 www.desktop.com 上设置负载平衡器以在看到移动用户代理时重定向到 www.mobile.com,则需要注意这一点。如果是这种情况,那么您将陷入无限重定向循环!

    绕过这实际上取决于您的设置,并且变化很大。虽然我不知道任何现有的解决方案,但一种实验方法是在客户端设置一个 cookie,其值是您不希望重定向的 URL。如果您的负载均衡器看到此 cookie,并且请求路径与 cookie 中的值匹配,则它会避免重定向。

    如果你想完成上述场景,你也可以像这样在氚中这样做:

    match($path) {
      with(/desktop/) {
         add_cookie("avoid_redirect", $path, "www.desktop.com")
         redirect_temporary("www.desktop.com")
      }
      else() {
        // normal transformations.
      }
    }
    

    然后在您的负载均衡器中,如果 cookie 值中的路径是请求的路径,则您必须检查避免重定向 cookie 并避免重定向到移动设备。

    【讨论】:

    • 我看到了一些使用 export() 函数的代码。使用它有什么不同吗?
    • 是的,这是传统的做事方式。新的 redirect_* 函数在后台执行相同的导出步骤。
    【解决方案2】:

    如果您仍希望 URL 为“m.mysite.com”,最好的方法是通过scripts/main.ts

    之后:

    match($detected_content_type) {
      with(/html/) {
    

    你应该输入:

    match($path) {
      with(/non_mobile_page_here/) {
        # do nothing!
      }
      else() {
        # put the rest of the html scope in here. 
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2013-06-01
      • 1970-01-01
      • 2017-05-10
      相关资源
      最近更新 更多