本帖最后由 yang。 于 2021-7-15 23:15 编辑 , m5 o0 n5 {: H0 Q# m9 v G
T; ?# ]2 W8 b3 v2 ? 在部署LP的时候,大家一般都会做一些校验,比如 爬虫、js支持等,一般要么在每个LP上加上,要么提取公共的JS来做。7 [- \; g5 A- i1 [
但是我觉得与其在LP上做这这些校验,还不如在LP前边做,直接过滤到基本的爬虫、js支持这种对LP毫无贡献的流量。) g% K* e+ v6 @' [/ `7 g
( w3 b, j! @, X5 J 另外对一些莫名其妙的访问,也起到隔离作用,顺便利用下这些流量,万一给你造成转化也说不定呢。
7 j; R' z- {: [ Q
" `# T. B. K1 p 具体做法是:
+ l" |7 w9 g1 y: H# d, N! m+ X 2 g: W$ k) N+ F% W
1.前置页面:在nginx下部署一个公有页面,该页面负责接受追踪器的跳转,相当于追踪器的lander页面统统都访问到这个页面<后边说追踪器配置>。9 E7 n M/ } d
假设前置页面的访问路径为 http://www.xxx.com/
4 ]4 T& M, d5 ]+ a0 x 2.假设我们有2个LP页面,ng配置的访问路径为http://www.xxx.com/iphone/01/index.html + ~1 t1 _; ]# }! N$ U
http://www.xxx.com/iphone/02/index.html ( ~0 a; ?$ |1 M, ^/ o K$ A0 {4 v
那么我们在追踪器中设置的LP访问路径为8 c; L* c i# o
http://www.xxx.com/?offerUrl=iphone&landUrl=01 * V% |) X+ b; x% c$ K
http://www.xxx.com/?offerUrl=iphone&landUrl=02 ( h H; B: G6 H5 N3 d
这里把对应的路径转化为参数,将来发送到前置页面,由前置页面根据规则统一处理5 j; ~/ X, ~9 a
$ ?0 m s" k; F g 这里,如果你前端功力不错的话,也可以将一些想做split测试的因子,作为参数传递到同一个页面,由js来处理这些因子,同一个页面也能减少干扰。比如把语言作为一个测试因子,如果我想测试一个在泰国跑的LP,英语和泰语那种受欢迎,那么我就可以加一个lang的参数作为测试因子,在追踪器中新建一个参数为lang=en和lang=th的lander页面地址,就能直接测试语言对LP的影响了。! P; U2 D z( V, k
: E' [3 q" }& n
) V8 Y5 ^2 k( ^$ x
2.前置页面内容如下# E' |$ D3 b$ P8 C. }% T3 j
<!DOCTYPE html>* B+ @* P+ f4 r& {+ J
<html lang="en">
8 A/ T/ n6 [: a7 G7 u <head>
! Q N+ X5 b# `9 K <meta charset="UTF-8">( a7 J$ {- |# w
<title>Loading</title>
. C5 v+ x) O% A& v( L </head>. {* ?' H3 p" t$ g0 H1 `
<body>! T2 `: Y% W. ] U7 X" k
Loading...& J! `- p1 g4 u
</body>" n- o0 U( l2 U" e' _8 \8 H5 c
; M% s3 ^+ Y. B, U <script>) R0 v @* `+ K: s. k0 W2 K
//因为我是按照offer来建立路径的,假如有个抽iphone的offer,有10个land页面,那么我的nginx目录设置成
" @5 w9 I6 @& |/ } //iphone0 [1 K+ s, [; |+ a! U) a0 m
//01 http://xxx/iphone/01/index.html
, W+ r# ?/ l+ y f //02 http://xxx/iphone/02/index.html
. @+ b8 |( o6 _% f5 `4 D0 T5 q- o# K* Q //以此类推9 y* {0 K4 e, c* U0 M+ P! Y7 J8 ?" m
" J, v. _- w: I$ ~2 D" \
9 P) h% Q3 N; m# |# u8 n5 x; T# _' M
' |5 T7 G2 \. e* j/ U! }/ ]
//这里假设我们的offer访问路径是 http://xxx/iphone/01/index.html" K# Z2 c r+ Q
//那么我们的offerUrl = iphone,landUrl = 01& u3 N* h% F$ m6 a: `
5 F( r2 T/ Z V+ L7 [- o
//从url参数中获取设置好的访问参数: Y" `* F( Z" T6 O: u# ~
const toffer = decodeURI((RegExp('offerUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");9 S9 j7 q+ C [2 W, F
const tland = decodeURI((RegExp('landUrl' + "=(.+?)(&|$)").exec(location.search) || [, null])[1] || "");0 P9 s5 w+ i" j W
, w$ z+ A* R% J4 ]
//校验参数是否被传递过来,如果传递过来,则拼接成对应的路径2 R6 U7 J5 l+ Z) V7 k* T
const b = (toffer != null && toffer !== '' && toffer !== undefined) && (tland != null && tland !== '' && tland !== undefined);* P" L3 d: _: |# k% D |
if(b){
# J) i# n' T2 _4 y9 s' u setTimeout(function() {/ _! u0 B0 o7 G3 a) l
var params = funcUrlDel(['offerUrl','landUrl']);) \- Y$ O* m' b% x
// 跳转到真正的LP页面,顺便做一个简易的爬虫过滤
/ ?# C7 k1 H3 i window.location.replace("/"+toffer+"/"+tland+"/index.html"+params);# i r: L3 p" I, O" d k7 d/ M* O
}, 300);
3 @; P5 g- H2 J' P }else{ 复制代码
9 K/ |) y) M2 s0 Y, i4 P5 X& ~ 6 E5 w, k/ [9 q
& q3 s" U& ^# {; e 只是一种简易的思路,主要目的是同一处理一些通用的操作,减少LP的工作。" \% F) { B& _4 A& x& }9 _. E
6 o1 W) k7 B. Z' E* W
$ F3 j- U+ j! Q. [
! m; ]' Y2 ^0 h0 ?
2 Y) U0 a* F; [$ \9 b$ y
9 `, b+ @2 h+ `- n& X% U
, b$ K s6 ^$ n2 j8 {
相关帖子