|
本帖最后由 yang。 于 2021-7-15 23:15 编辑 . T$ ~/ ]0 }) @* Q, G* O
1 H# _5 {0 y; a$ J在部署LP的时候,大家一般都会做一些校验,比如 爬虫、js支持等,一般要么在每个LP上加上,要么提取公共的JS来做。
% w9 ]9 V) z5 D$ T0 D, Y( F5 a0 H但是我觉得与其在LP上做这这些校验,还不如在LP前边做,直接过滤到基本的爬虫、js支持这种对LP毫无贡献的流量。
& a: l2 f+ S0 K x# W0 ^$ T5 M4 f: H. w1 }5 F& w) A
另外对一些莫名其妙的访问,也起到隔离作用,顺便利用下这些流量,万一给你造成转化也说不定呢。 n4 V& G+ E1 @" p" Y8 \
, ]9 d# W+ R; e1 Q+ B j) W. I具体做法是:
; p+ H* j0 u K. \
1 h2 D* j7 _2 m6 C# f8 z* u1.前置页面:在nginx下部署一个公有页面,该页面负责接受追踪器的跳转,相当于追踪器的lander页面统统都访问到这个页面<后边说追踪器配置>。
, P7 i( Y, l% d( n. n5 G% h8 ~假设前置页面的访问路径为 http://www.xxx.com/# V1 ?: ]3 ?, F
2.假设我们有2个LP页面,ng配置的访问路径为http://www.xxx.com/iphone/01/index.html 6 q/ U1 e4 {* ]* O6 u
http://www.xxx.com/iphone/02/index.html
0 T6 u, o& A3 Y! }2 O: s, [7 p那么我们在追踪器中设置的LP访问路径为! F) |% F$ t5 Z* L: e
http://www.xxx.com/?offerUrl=iphone&landUrl=01
: J: B, w9 A8 x. lhttp://www.xxx.com/?offerUrl=iphone&landUrl=021 i6 a0 A) Y" h* P- m
这里把对应的路径转化为参数,将来发送到前置页面,由前置页面根据规则统一处理
: |% N: E- H& i0 z5 @
" f) o. {; Q& t4 T3 H这里,如果你前端功力不错的话,也可以将一些想做split测试的因子,作为参数传递到同一个页面,由js来处理这些因子,同一个页面也能减少干扰。比如把语言作为一个测试因子,如果我想测试一个在泰国跑的LP,英语和泰语那种受欢迎,那么我就可以加一个lang的参数作为测试因子,在追踪器中新建一个参数为lang=en和lang=th的lander页面地址,就能直接测试语言对LP的影响了。0 [& O8 B2 @0 m1 V* P
( ~% X0 r6 B3 q& u
* K0 k; ]3 m% A2.前置页面内容如下/ L+ w; z( z/ s3 v* s6 [
- <!DOCTYPE html>
3 ~: h0 q! H1 ^ - <html lang="en">+ J& K B/ v& @+ L4 _! j
- <head>+ M- |3 }1 ] q2 L
- <meta charset="UTF-8">
5 a O: D9 A) v - <title>Loading</title>
& ^( N# c6 A0 ^, L - </head>
- M* W/ q7 G" J3 s3 e - <body> t, d1 S) W: g) O/ g! E
- Loading... c9 ~: y7 u9 u h" i: `
- </body>$ a0 x. v. h2 ~! A. y2 N
- 5 l- t! p m9 j
- <script>
6 a/ v$ Q) l3 W2 c - //因为我是按照offer来建立路径的,假如有个抽iphone的offer,有10个land页面,那么我的nginx目录设置成) n: L+ X$ L& U' a* V0 T; ?4 D
- //iphone
8 [3 C$ @% ^# K7 `5 E - //01 http://xxx/iphone/01/index.html$ d, h8 [3 c! a$ d
- //02 http://xxx/iphone/02/index.html4 S2 w. f0 r+ _/ U1 ^1 Y
- //以此类推0 s# i q3 p7 p T
- f4 o% L& V( q* o/ p* c
- $ C y1 u6 L# c, w- n4 p! s) o
-
, y" {& o' k2 e6 b - //这里假设我们的offer访问路径是 http://xxx/iphone/01/index.html
, W4 U+ K8 k( Y1 w* d; C - //那么我们的offerUrl = iphone,landUrl = 013 [" a& F: j6 s! u- B* l; x2 h; t: c
-
3 L# d4 B# ~+ \4 w$ Z1 _, m! c6 O - //从url参数中获取设置好的访问参数8 H9 y; v- r7 U' |
- const toffer = decodeURI((RegExp('offerUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");! [% q' W. k: ]3 E( g* |( q
- const tland = decodeURI((RegExp('landUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");6 A" W# o1 t+ b6 I* Y$ l0 f
- " b! ^* M# Z$ w2 { G7 w y8 ? U
- //校验参数是否被传递过来,如果传递过来,则拼接成对应的路径9 K" V0 U5 k! E6 e
- const b = (toffer != null && toffer !== '' && toffer !== undefined) && (tland != null && tland !== '' && tland !== undefined);0 w: z6 Q2 L9 p0 @
- if(b){
' }2 r/ V- L: M - setTimeout(function() {, j: p D) C8 O3 A7 ?# C
- var params = funcUrlDel(['offerUrl','landUrl']);
1 s5 a/ a( p+ k( a$ `1 L& N - // 跳转到真正的LP页面,顺便做一个简易的爬虫过滤9 a. n; O/ F) `9 Z( @+ d
- window.location.replace("/"+toffer+"/"+tland+"/index.html"+params);
* A6 z) {5 A( n0 H+ p& g, [ - }, 300);: F- z9 S3 a1 S \) e9 F
- }else{
复制代码 " \/ C% l! J' T }# s+ e$ ~
5 X9 L6 A5 T+ s
" R8 K8 ^7 t. D7 Z只是一种简易的思路,主要目的是同一处理一些通用的操作,减少LP的工作。
# \$ i% h. }# W0 O
0 }" _1 z2 z @ H. ~5 q8 H4 z! i3 K, `" R8 Y" y _
) {/ ~( d# X0 D7 m: w, i W9 S8 a# x( \7 L4 N
1 M( Z& G( X- e; {: U
0 E* J7 ~7 g H# J( s |
|