解决这种两难其实很简单,只要给搜索引擎提供不同的内容就可以了。
实现方法就是识别搜索引擎,然后发送特定信息。
识别搜索引擎有两种方法,排除常用浏览器和直接识别搜索引擎,这里我用第二种方法,识别部分搜索引擎。
发送特定信息业有多种方法,可以在当前页面中包含生成特定信息代码,也可以跳转。我选择跳转,以免使页面混乱。
asp3.0给了我们一个全新的跳转方法:Server.Transfer。其他像response.redirect,:<meta HTTP-EQUIV=REFRESH CONTENT="0;URL=******">都会产生两次调用,耗费很长时间,而且搜索引擎可能不支持这种跳转,或者不允许这种跳转。server.transfer有点像include,直接将目标页面的代码拿进来取代当前页面执行,在客户端看来仅一次调用,就是执行当前页面。不过server.transfer仅支持相对路径的跳转,不能跳转到其他的网站!跳转页面的内容也仅限于asp和html。
经过测试,我发现response.redirect的状态码是302,而meta的方法状态码是200,它是靠浏览器跳转的。
301属于永久性重定向,而302则属于临时性重定向。302按照google的原则是不能长期使用的,跳转后的内容不会被采用。
asp跟php的301重定向方法:
ASP:
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.yoursite.com/"
Response.End
PHP:
header("HTTP/1.1 301 Moved Permanently");
header("Location:");
exit();
server.transfer 方法的简单实现
Agent=Request.ServerVariables("HTTP_USER_AGENT")
'识别搜索引擎
Dim botlist,i,IsSearch
Botlist="Google,Isaac,SurveyBot,Baidu,ia_archiver,P.Arthur,FAST-WebCrawler,Java,Microsoft-ATL-Native,TurnitinBot,WebGather,Sleipnir,yahoo,3721,yisou,sohu,openfind,aol"
Botlist=split(Botlist,",")
For i=0 to UBound(Botlist)
If InStr(Agent,Botlist(i))>0 Then
server.transfer "simple.asp"
IsSearch=True
Exit For
End If
Next
只要在simple.asp中生成优化的页面就可以了,优化的页面可以尽量的简单,甚至可以是完全不同的内容。
利用这个方法我们还可以作别的事情,比如google adsense。google adsense会抓去页面,分析页面内容来给你适当的广告,当网页信息没有重点的时候,google adsense会给你公益广告。我们可以将adsense的bot转向到我们定义的内容来骗取广告,甚至骗取竞价更高的广告!不过不知道会不会对google的搜索结果带来影响。