一到假期,購買欲就成倍加強,勞動節也不例外,昨天在網上買洗車器,不小心進入一個叫三雪的網站,發現盡管在搜索結果中顯示的是它的主域名,但點擊卻直接進了網站的一個內頁(/xicheqi),反復幾次,依然如此,從這頁面的設計看,也算上得有幾分姿色,可是好好的主域名不用,直接跳到內頁干什么?於是我在地址欄修改地址,改成主域名后,再訪問,發現網站是有主頁的,但,比起剛剛看到的內頁,主頁設計反而顯得簡陋至極,my god,why。
幾經尋覓,終於得到了答案:這是一個推廣洗車器的網站,主頁和內頁分工不同,內頁負責展示商品和引導購買,主頁負責SEO。這種形式在推廣網站中屢見不鮮,而我感興趣的是:為什么在搜索結果中打開的主頁轉到了內頁,而在瀏覽器中打開的主頁卻沒有跳轉?
審查元素,發現這樣一段代碼:
1 var regexp=/\.(sogou|soso|baidu|google|youdao|yahoo|bing|118114|biso|gougou|ifeng|ivc|sooule|niuhu|biso)(\.[a-z0-9\-]+){1,2}\//ig; 2 var where = document.referrer; 3 if(regexp.test(where)) 4 { 5 window.location.href='http://www.threesnow.com/xicheqi/' 6 }
真相大白,這是一段只針對來源於搜索結果的鏈接進行頁面跳轉的JS代碼,代碼的內容也很容易理解,相似的代碼也不難寫出。但上面的代碼與各種直接跳轉的代碼不同在於需求解決的層面。一般來說,一個網站的訪問來源不外乎三種:直接訪問、通過搜索引擎、通過外鏈訪問。當一個網站需要將這三種訪問來源進行區分引導時,直接跳轉顯然不能解決問題,並且從站外到站內的訪問也沒有參數可以傳遞,所以,這種源自於推廣網站的來源分類不失為一個好的方法。
從三雪網上拷下來的代碼只是實現了直接訪問和通過搜索引擎訪問的分類,我根據直接訪問時 document.referrer 值為空的特性,又重寫一個將三種訪問來源進行分類的JS代碼段備用。
1 var regexp=/\.(sogou|soso|baidu|google|youdao|yahoo|bing|118114|biso|gougou|ifeng|ivc|sooule|niuhu|biso|threesnow)(\.[a-z0-9\-]+){1,2}\//ig; 2 var where = document.referrer; 3 4 if(where == null) 5 { 6 //直接訪問 7 window.location.href='http://www.cnblogs.com/' 8 } 9 else if(regexp.test(where)) 10 { 11 //通過搜索引擎訪問 12 window.location.href='http://www.cnblogs.com/cnliu/' 13 } 14 else 15 { 16 //通過外鏈訪問 17 window.location.href='http://www.cnblogs.com/cnliu/archive/2011/07/25/evaluate-15-pages-of-university.html' 18 }