我正在使用 Moovweb SDK 移动网站,但有些部分我不想针对移动设备进行更改。如何强制这些链接指向原始桌面站点?
2 回答
您可以通过告诉 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 值中的路径是请求的路径,则必须检查 Avoid_redirect 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.
}
}