【发布时间】:2013-05-28 15:52:56
【问题描述】:
我正在使用 Moovweb SDK 移动网站,但有些部分我不想针对移动设备进行更改。如何强制这些链接指向原始桌面网站?
【问题讨论】:
我正在使用 Moovweb SDK 移动网站,但有些部分我不想针对移动设备进行更改。如何强制这些链接指向原始桌面网站?
【问题讨论】:
您可以通过告诉 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 并避免重定向到移动设备。
【讨论】:
如果您仍希望 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.
}
}
【讨论】: