Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



js 判断手机还是pc并根据正则反向匹配跳转

被百度搞死了,公司一个网站比较老了,而且之前是没有开发手机站的。结果导致百度手机收录的页面绝大部分被转码。

添加网络上说的那些转码申明也是然并卵,原来的站是用。net开发的,但是我只会php无奈,去啃原来的sql数据库 然后用php写了一个手机站,但是这两个站没办法衔接起来,在百度后台用规则匹配各种提交各种错,提交问题也不回,于是就着手写了本文的js 功能

逻辑: 在原网站的公共调用页面引入本文的js文件。然后这个js首先判断是手机还是pc,如果是手机就获取当前的url然后拿来和规则做匹配,如果匹配到了就直接跳转到反向替换后的url, 即手机站的页面并跳出循环。否则不做任何处理 继续访问pc页面

新建一个rurl.js

然后把下面的代码贴进去 不要复制分割线

规则根据自己的来写,这个只是我们公司的匹配规则 需要修改成自己站点的;



代码如下:

====================================================

// JavaScript Document
var system ={
  win : false,
  mac : false,
  xll : false
  };
var gz = new Array();
gz['http://3g.peixunsj.cn/$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/index_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/about-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/schoointroduction_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/course_list-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/subjectsingle_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/course-$2-$4.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/subjectdetails_schid_([0-9]+)_cid_([0-9]+)_id_([0-9]+).html/;
gz['http://3g.peixunsj.cn/course-$2-$3.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/subjectdetails_schid_([0-9]+)_id_([0-9]+).html/;
gz['http://3g.peixunsj.cn/news_table-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/news_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/news-$2-$3.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/newsdetails_schid_([0-9]+)_id_([0-9]+).html/;
gz['http://3g.peixunsj.cn/teacher_table-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/teacher_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/huanjing-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/schoolenvironment_schid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/address-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/school\/schooladdress_schid_([0-9]+).html/;
//城市页
gz['http://3g.peixunsj.cn/city-$1.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/index.html/;
gz['http://3g.peixunsj.cn/class-$1.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/subjects.html/;
gz['http://3g.peixunsj.cn/course_t-$1-1-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/subjects_catalogid_([0-9]+).html/;
gz['http://3g.peixunsj.cn/school_t-$1.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/schools.html/;
gz['http://3g.peixunsj.cn/school_t-$1/$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/schools_page_([0-9]+).html/;
gz['http://3g.peixunsj.cn/news-$1-$2.html']=/http:\/\/([a-zA-Z]+).peixunsj.cn\/web\/address\/newsdetail_id_([0-9]+).html/;


  var p = navigator.platform;
  system.win = p.indexOf("Win") == 0;
  system.mac = p.indexOf("Mac") == 0;
  system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
  if(system.win||system.mac||system.xll){
    }else{
var surl=window.location.href;
for(var key in gz){
var durl=surl.replace(gz[key],key);
// alert(durl);
 if (durl!=surl) {
window.location.href=durl;
break;
}
}
}

====================================================

注释:其中gz中的key表示的是反向匹配的结果  gz的值表示的是匹配规则

页面引入js:

<script type="text/javascript" src="/rurl.js"></script>

浏览776  评论0  Alex于 2016-7-13 15:13
发言