|
本帖最后由 yang。 于 2021-7-15 23:15 编辑
& i' V7 ]+ B: h* d7 |" t, w4 j/ q# f: ]7 p3 ~+ J2 R9 q9 h
在部署LP的时候,大家一般都会做一些校验,比如 爬虫、js支持等,一般要么在每个LP上加上,要么提取公共的JS来做。$ v0 \3 K- Q9 a
但是我觉得与其在LP上做这这些校验,还不如在LP前边做,直接过滤到基本的爬虫、js支持这种对LP毫无贡献的流量。
9 }" H& d. t! Q r
0 S- A3 B4 Y1 `& U/ e另外对一些莫名其妙的访问,也起到隔离作用,顺便利用下这些流量,万一给你造成转化也说不定呢。; r2 v* u& w& _5 z; X( b2 F' u
4 h: x) Q2 Q# N
具体做法是:
& Y: e, S) s7 f2 n& e
9 H+ ~4 k1 s8 [# T1.前置页面:在nginx下部署一个公有页面,该页面负责接受追踪器的跳转,相当于追踪器的lander页面统统都访问到这个页面<后边说追踪器配置>。; t, T2 G V8 B0 f
假设前置页面的访问路径为 http://www.xxx.com/: o3 t7 ] P7 P! f1 Z( x
2.假设我们有2个LP页面,ng配置的访问路径为http://www.xxx.com/iphone/01/index.html
4 }# N1 B/ A: M0 L2 Ihttp://www.xxx.com/iphone/02/index.html9 K0 d9 `/ _8 m4 J8 ]
那么我们在追踪器中设置的LP访问路径为/ Z b/ {7 Y( ]. t2 w5 ?& k% O
http://www.xxx.com/?offerUrl=iphone&landUrl=01
9 _2 y# f3 k \8 e$ Nhttp://www.xxx.com/?offerUrl=iphone&landUrl=02
% Y: k1 t' f2 V# ?1 s这里把对应的路径转化为参数,将来发送到前置页面,由前置页面根据规则统一处理+ u/ S8 R: J$ r, k
* l0 V2 P/ e* y4 f: r! X这里,如果你前端功力不错的话,也可以将一些想做split测试的因子,作为参数传递到同一个页面,由js来处理这些因子,同一个页面也能减少干扰。比如把语言作为一个测试因子,如果我想测试一个在泰国跑的LP,英语和泰语那种受欢迎,那么我就可以加一个lang的参数作为测试因子,在追踪器中新建一个参数为lang=en和lang=th的lander页面地址,就能直接测试语言对LP的影响了。( B7 J4 A J6 e4 }, m, Y0 b
" n3 ^. v# q$ K9 ^+ p! Y/ }2 v2 E; Q* T
2.前置页面内容如下
4 Q- T2 _; H' I e% } ~. n- <!DOCTYPE html>
0 ~; a! P4 [# j) G V0 g. h - <html lang="en">
- _0 f) o" v/ @5 X1 _ - <head>/ y) {6 `- d. {: {6 n9 q0 ]( d
- <meta charset="UTF-8">
& g D0 \" l) F; q/ B7 e - <title>Loading</title>$ w% l0 t5 n0 V, a
- </head>( J1 \! I' L' \/ l0 {# H
- <body>
% M" U8 V& s/ _/ O- N+ { - Loading...
6 i. a, B. P, @4 l4 ]/ | - </body>4 x( U" E8 Q4 e) N' v
- " b3 E' ?/ J8 f! `( [3 r7 }& o
- <script>
1 h6 U" `: U2 P' ^ - //因为我是按照offer来建立路径的,假如有个抽iphone的offer,有10个land页面,那么我的nginx目录设置成 R% ^9 C$ |+ \; b& i5 n
- //iphone
" {* m& r+ @' j: P, a - //01 http://xxx/iphone/01/index.html
( Z* Y& m0 a5 w - //02 http://xxx/iphone/02/index.html
A5 B$ }: b0 F* S - //以此类推, s% k2 J$ G8 p3 ]; s$ n
-
, X7 n9 Q6 P' V! M3 r - : i& f2 A M# E8 Y1 b
- . G- b3 W+ Y# `& O( L1 l8 E) n1 U
- //这里假设我们的offer访问路径是 http://xxx/iphone/01/index.html2 o9 E: [1 u2 G4 K) _2 A5 s9 O
- //那么我们的offerUrl = iphone,landUrl = 01( n1 W4 f5 c* ?5 ?, l1 _( S
- % {7 \& z& w8 W* v! y/ T5 ]
- //从url参数中获取设置好的访问参数- Z( W" T c2 l/ c- ^
- const toffer = decodeURI((RegExp('offerUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");9 }1 W, X: E# Z* m. k9 {( {
- const tland = decodeURI((RegExp('landUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");
" f! x |9 x- x6 j2 t- n u# U2 i -
2 i& N8 T: }% o8 ` - //校验参数是否被传递过来,如果传递过来,则拼接成对应的路径
2 ^/ j Q) C( Z+ q7 D4 s - const b = (toffer != null && toffer !== '' && toffer !== undefined) && (tland != null && tland !== '' && tland !== undefined);2 o% f" ?, x) q
- if(b){* N1 J4 n5 b. ^3 P5 n) l
- setTimeout(function() {
( x9 y* m" x- A. p: B9 _7 s/ X( Q - var params = funcUrlDel(['offerUrl','landUrl']);: S0 r: z5 u" z
- // 跳转到真正的LP页面,顺便做一个简易的爬虫过滤 {! \3 o0 O: @) y
- window.location.replace("/"+toffer+"/"+tland+"/index.html"+params);
0 Y2 e! i9 @( b- T+ r; q) ? - }, 300);5 f0 A# I d g& y- k
- }else{
复制代码 9 x f* G3 u7 F, E! U4 O# F
d' P, a2 R/ }( r; ~- E
3 \! O X' S! ?' [
只是一种简易的思路,主要目的是同一处理一些通用的操作,减少LP的工作。+ o. Q- _% G6 f2 s5 {
1 m, O3 }* D/ \% w, u1 E( |' S
7 g) O: t$ R/ s! i4 w2 [* q$ E4 X8 u7 c% K {
* ^0 Y& a( ?, B/ p0 L6 h& m
! L4 |- J5 C/ k6 S# T4 T, c4 J! _4 j9 a2 J- H# I- p
|
|