移动重定向

 

1、js

 <script src="http://static.dudamobile.com/DM_redirect.js" type="text/javascript"></script>
 <script type="text/javascript">
    DM_redirect("http://m.example.com");
 </script>


2、php

 <?php
  $mobileDomain = "http:// m.example.com ";
  $no_redirect = @$_REQUEST['no_redirect'];
  if($no_redirect != "true")
  {
      $agent = @$_SERVER['HTTP_USER_AGENT'];
      @ini_set('default_socket_timeout',1);
      $handle = @fopen("http://mobile.dudamobile.com/api/public/detect?ua=" . urlencode($agent), "r");
      @stream_set_timeout($handle, 1);

      /* check if we should redirect*/
      $result = @fread ( $handle , 1 );

      @fclose($handle);
      if ($result == "y") {
          $currenturl = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
          $mobileUrl = $mobileDomain ."?url=" .urlencode($currenturl);
          header("Location: ".$mobileUrl);
          exit;
      }
  }
 ?>

3、asp
 <%
 Dim no_redirect, detecturl, handle, output, currenturl, mobileUrl
 no_redirect = Request.QueryString("no_redirect")
 If no_redirect <> "true" Then

     currenturl = ( "http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") ) & "?" & Request.ServerVariables("QUERY_STRING")
     detecturl = "http://mobile.dudamobile.com/api/public/detect?ua=" & Server.UrlEncode(Request.ServerVariables("HTTP_USER_AGENT"))
     set handle = CreateObject("MSXML2.ServerXMLHTTP")
     handle.setTimeouts 5000,5000,5000,5000
     handle.open "GET", detecturl, false
     handle.send ""
     output = handle.responseText
     mobileUrl = " http:// m.example.com " & "?url=" & Server.UrlEncode(currenturl)

     If output = "y" Then
  Response.Redirect(mobileUrl)
     End If
 End If
 %>

4、jsp

 <%@page import="java.net.URLEncoder"%>
 <%@page import="java.net.URL"%>
 <%@page import="java.net.HttpURLConnection"%>
 <%

 if(! "true".equals(request.getParameter("no_redirect")))
 {
     String currenturl = request.getRequestURL() + (request.getQueryString() != null ? "?" + request.getQueryString() : "");
     try{
  String ua = URLEncoder.encode(request.getHeader("user-agent"), "utf-8")).openConnection();
  HttpURLConnection con = (HttpURLConnection)new URL("http://mobile.dudamobile.com/api/public/detect?ua=" + ua);
  con.setConnectTimeout(5000); //set timeout to 5 seconds
  char c = (char)con.getInputStream().read();

  con.disconnect();
  if(c == 'y')
  {
      String mobileUrl = "http://m.example.com";
      response.sendRedirect(mobileUrl + "?url=" + URLEncoder.encode(currenturl));
  }
     }
     catch(Exception e){
  e.printStackTrace();
     }
 }
 %>

 </code>
 </pre>
       </div><!--/entry -->
        </div><!--/post -->
    
     </div>

DM_redirect.js

 

function DM_redirect(MobileURL, Home){
	try {
		// avoid loops within mobile site
		if(document.getElementById("dmRoot") != null)
		{
			return;
		}
		var CurrentUrl = location.href
		var noredirect = document.location.search;
		if (noredirect.indexOf("no_redirect=true") < 0){
			if ((navigator.userAgent.match(/(iPhone|iPod|BlackBerry|Android|webOS|Windows CE|IEMobile|Opera Mini|Opera Mobi|HTC|LG-|LGE|SAMSUNG|Samsung|SEC-SGH|Symbian|Nokia|PlayStation|PLAYSTATION|Nintendo DSi)/i)) ) {
				location.replace(MobileURL);
				if(Home){
					
				}
				else
				{
					location.replace(MobileURL + "?url=" + encodeURIComponent(CurrentUrl));
				}
			}
		}	
	}
	catch(err){}
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值