您的位置:首页 > 运维架构 > 网站架构

网站判断从百度搜索来的关键词 从而跳转到指定页面

2013-01-23 10:44 645 查看
在前人的一些代码修改之下,自己弄出来了一个这样的跳转方案,可能不是很完美,不过也花了不少时间总算还是实现了需求,以我现在的js能力只能做到这样了,改进可能要到以后了。看代码吧,直接用例子说话,一边解释最好。(现在觉得代码有时比说话简洁,呵呵)

先把下面代码另存为js文件,然后可以放在网页的任何位置,当然不影响网页加载速度优先。

var surl=document.location.href+"&from="+from;//自定义的一个来源 可以不要
var s=document.referrer;
/*****
思路大概是:
获取从百度来的关键词 用我们自己的关键词匹配 匹配对了 跳转到指定网页
跳转到一个php文件的好处 是用表单做跳转 对seo影响较小 而且还可以在php里面加些自定义判断功能

其中有用到 站长工具(http://tool.chinaz.com/)的 url编码解码  大小写转换

js的  .test()  函数  是看能是否字符串匹配成功
*****/
var re=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E9%A3%8E%E6%B9%BF))/;  //风湿 url编码 格式为utf-8的
var re1=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E9%AA%A8%E8%B4%A8%E5%A2%9E%E7%94%9F))/;  //骨质增生 url编码
var re2=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E9%A2%88%E6%A4%8E%E7%97%85))/;  //颈椎病 url编码
var re3=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E5%BC%BA%E7%9B%B4%E6%80%A7%E8%84%8A%E6%9F%B1%E7%82%8E))/;  //强直性脊柱炎 url编码
var re4=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E7%97%9B%E9%A3%8E))/;  //痛风 url编码
var re5=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E8%85%B0%E6%A4%8E%E7%97%85))/;  //腰椎病 url编码
var re6=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E8%82%A9%E5%91%A8%E7%82%8E))/;  //肩周炎 url编码
var re7=/((wd|q|w|p|query)(=)([%A-Z0-9]*)(%E5%93%81%E7%89%8C))/;  //品牌 url编码

var curl=window.location.href;
if(re.test(s))
{
var iii = decodeURI('%E9%A3%8E%E6%B9%BF');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);  //get传值 到tiaozhuan.php
}
else if(re1.test(s))
{
var iii = decodeURI('%E9%AA%A8%E8%B4%A8%E5%A2%9E%E7%94%9F');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re2.test(s))
{
var iii = decodeURI('%E9%A2%88%E6%A4%8E%E7%97%85');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re3.test(s))
{
var iii = decodeURI('%E5%BC%BA%E7%9B%B4%E6%80%A7%E8%84%8A%E6%9F%B1%E7%82%8E');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re4.test(s))
{
var iii = decodeURI('%E7%97%9B%E9%A3%8E');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re5.test(s))
{
var iii = decodeURI('%E8%85%B0%E6%A4%8E%E7%97%85');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re6.test(s))
{
var iii = decodeURI('%E8%82%A9%E5%91%A8%E7%82%8E');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else if(re7.test(s))
{
var iii = decodeURI('%E5%93%81%E7%89%8C');
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php?a='+iii+'&from='+from,curl,1);
}
else
{
yh_turn('http://www.120xbk.com/swt/tiaozhuan.php',surl,1);
}

//模拟提交表单跳转
function yh_turn(url,domain,from)
{
function isURL(url){
return(/^(http(s?))\:\/\/([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?([\/\?]\S*)?$/.test(url));
}

if(!isURL(url))return false;
function doSubmit()
{
//hidden body
document.writeln('<style type="text/css">body{display:none;}</style>');

//var tjurl = url+'?'+domain;
var tjurl = url;

document.write('<form name="myform" id="tj" action="'+tjurl+'" method="post" target="_self"></form>');
//document.myform.submit();
setTimeout('document.getElementById("tj").submit()',500);

}
if(from==1){
var s=document.referrer;
if(s&&(s.indexOf("baidu.com")>0||s.indexOf("google.com")>0||s.indexOf("soso.com")>0||s.indexOf("sogou.com")>0)){
doSubmit();
}
}
if(from==0){
doSubmit();   //不经过百度 默认都跳转
}
}

然后是经过一个tiaozhuan.php 处理,代码如下

<?php
$refer = $_SERVER['HTTP_REFERER'];
$from = $_GET['from'];  //如果有来源 接收来源
$a = $_GET['a'];
$b = urldecode($a);  //将字符串以URL解码

//处理变量$refer
$str=substr($refer,7);//去除前面
$n=strpos($str,'/');//寻找位置
if ($n) $str=substr($str,0,$n);//删除后面

$url_this = "http://".$_SERVER ['HTTP_HOST'];
header("HTTP/1.1 301 Moved Permanently");

if($refer)
{
switch($b)
{
case '风湿': header("location:".$url_this."/tszl/20110805-527.html?".$str."&".$from);break;
case '骨质增生':header("location:".$url_this."/bingli/gjzx/20110702-272.html?".$str."&".$from);break;
case '颈椎病':header("location:".$url_this."/tszl/20110805-546.html?".$str."&".$from);break;
case '强直性脊柱炎':header("location:".$url_this."/tszl/20110702-284.html?".$str."&".$from);break;
case '痛风':header("location:".$url_this."/tszl/20110702-285.html?".$str."&".$from);break;
case '腰椎病':header("location:".$url_this."/tszl/20110702-287.html?".$str."&".$from);break;
case '肩周炎':header("location:".$url_this."/tszl/20110702-263.html?".$str."&".$from);break;
case '品牌':header("location:".$url_this."/tszl/?".$str."&".$from);break;
default: header("location:".$url_this."?".$str."&".$from);break;
}
}
else
exit;

?>

到这里基本实现我所要的功能,但我总觉得还可以更优化,希望高手能指正出不足的地方!
本文出自 “hnllyrp” 博客,请务必保留此出处http://hnllyrp.blog.51cto.com/2149641/1124465
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: