diff --git a/roles/openresty/files/java-nginx-config/nginx/conf/lua/switch_controller.lua b/roles/openresty/files/java-nginx-config/nginx/conf/lua/switch_controller.lua
index 15cc40f..baa47e4 100644
--- a/roles/openresty/files/java-nginx-config/nginx/conf/lua/switch_controller.lua
+++ b/roles/openresty/files/java-nginx-config/nginx/conf/lua/switch_controller.lua
@@ -8,8 +8,8 @@ package.loaded[modname]=M
  
 
 -- switch.
--- switch_to_aws:  http://erp.yoho.yohoops.org/switch/?method=switch&percentage=10
--- switch query:    http://erp.yoho.yohoops.org/switch/?method=query
+-- switch_to_aws:  http://erp.yoho.yohoops.org/switch?method=switch&percentage=10
+-- switch query:    http://erp.yoho.yohoops.org/switch?method=query
 
 -- mal ip controller api --------
 function M:switch()
diff --git a/roles/openresty/files/java-nginx-config/nginx/conf/redirect.lua b/roles/openresty/files/java-nginx-config/nginx/conf/redirect.lua
index 283d18c..2b4b0b8 100644
--- a/roles/openresty/files/java-nginx-config/nginx/conf/redirect.lua
+++ b/roles/openresty/files/java-nginx-config/nginx/conf/redirect.lua
@@ -1,135 +1,89 @@
-local redirectPath = "/apigateway" ;
+local http_request = require "http_request"
+local switch_controller = require "switch_controller"
 
  
-
---- modify content-type, add utf-8 charset if absent
-if   ngx.req.get_headers()["content-type"]  ~= nil  and  ngx.req.get_headers()["content-type"] == 'application/x-www-form-urlencoded' then
-     ngx.req.set_header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
-end
-
-
---- if url match the service url, just redirect
-if  ngx.var.service_matched == "1"  then
-    
-    local uri = ngx.var.uri 
-    if nil == ngx.req.get_uri_args() then
-        return ngx.exec(redirectPath ..uri);
-    else
-       return ngx.exec(redirectPath ..uri, ngx.req.get_uri_args());
-     end
+function do_direct(redirect_path)
+        local request_method = ngx.var.request_method;
+        if "GET" == request_method then
+                ngx.exec(redirect_path,ngx.req.get_uri_args());
+        else
+                ngx.exec(redirect_path);
+        end
 end
 
-       --  method ==9 is not supported  , ngx will return directly with reponse message: "please update your app "
-        local VERSION_ONLINE_NEW=0;
-        local METHOD_NEW={
-
-["app.passport.signin"]=9,
+function route(redirectPath)
 
+        --- modify content-type, add utf-8 charset if absent---
+        if ngx.req.get_headers()["content-type"]  ~= nil  and  ngx.req.get_headers()["content-type"] == 'application/x-www-form-urlencoded' then
+           ngx.req.set_header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
+        end
 
-["app.drawline.getQueueList"]=4,
-["app.drawline.addQueue"]=4,
-["app.drawline.getUserActivityInfo"]=4,
-["app.drawline.getActivityInfo"]=4,
-["app.drawline.getLuckyUserList"]=4,
-["app.drawline.changeTaskValue"]=4,
-
-["wap.activity.getActivityInfo"]=4, 
-["app.activity.getInfoOfOrderShare"]=4, 
-["wap.order.drawOrderShareCoupon"]=4, 
-["wap.order.registerAndSendCoupon"]=4--,
-
-
---["wechat.user.follow"]=5,
---["wechat.user.unfollow"]=5,
---["wechat.token.getmini"]=5,
---["wechat.token.get"]=5
-                  };
-
-
-
-
-   --decode request method
-        local request_method = ngx.var.request_method;
-
-        --if header "content_type" is multipart/form-data, send to IDC
-        --multipart/form-data maybe used to upload image, as user header image
-        local request_headers = ngx.req.get_headers();
-        if request_headers["content_type"] ~= nil and string.sub(request_headers["content_type"],1,19) == "multipart/form-data" then
-                ngx.log(ngx.INFO,"redirect don't support multipart/form-data, method is " .. request_method .. ", send to api.open.yohobuy.com");
-                if "GET" == request_method then
-                        ngx.exec(redirectPath,ngx.req.get_uri_args());
+        --- if url match the service url, just redirect path with uri
+        if  ngx.var.service_matched == "1"  then 
+                local uri = ngx.var.uri 
+                if nil == ngx.req.get_uri_args() then
+                  return ngx.exec(redirectPath ..uri);
                 else
-                        ngx.exec(redirectPath);
-                end
-        else
-        --if header "content_type" is x-www-form-urlencoded, decode arguments
-                local args = nil ;
-                if "GET" == request_method then
-                        args = ngx.req.get_uri_args()
-                elseif "POST"== request_method then
-                        ngx.req.read_body()
-                        args = ngx.req.get_post_args()
+                  return ngx.exec(redirectPath ..uri, ngx.req.get_uri_args());
                 end
+        end
 
-                --decode arguments "method" and "v" in request data
+        local VERSION_ONLINE_NEW=0;
+        local METHOD_NEW={
+                ---- 9 for  forbidden
+                ["app.passport.signin"]=9,
+
+                 ---- 4 for  /activityApi
+                ["app.drawline.getQueueList"]=4,
+                ["app.drawline.addQueue"]=4,
+                ["app.drawline.getUserActivityInfo"]=4,
+                ["app.drawline.getActivityInfo"]=4,
+                ["app.drawline.getLuckyUserList"]=4,
+                ["app.drawline.changeTaskValue"]=4,
+                ["wap.activity.getActivityInfo"]=4, 
+                ["app.activity.getInfoOfOrderShare"]=4, 
+                ["wap.order.drawOrderShareCoupon"]=4, 
+                ["wap.order.registerAndSendCoupon"]=4
+        };
+        
+        local method = http_request.get_req_param("method")        
+        -- method not allowed currently
+        if  method and METHOD_NEW[method] == 9 then
+                ngx.header["Content-type"]="application/json;charset=utf-8"
+                local rsp = '{"alg": "SALT_MD5","code": 112232323,"data": {},"md5": "f4a7a490bb6666b005008d795ed14e5d", "message": "请升级客户端版本!"}'
+                ngx.say(rsp) 
+                ngx.exit(ngx.HTTP_OK)
+        end     
+        -- redirect to activity
+        if  method and METHOD_NEW[method] == 4 then
+                do_direct("/activityApi")
+        else
+                do_direct(redirectPath)
+        end
+end
 
-                -- if args is nil?
-                if args == nil then
-                        ngx.log(ngx.INFO, "can not get any args!")
-                        ngx.exit(ngx.HTTP_OK )
-                end
 
+---- main
+function main()
 
-                local method = args["method"];
-                local version = tonumber(args["v"]);
+   local  redirectPath = "/apigateway" ;
 
-                if version == nil then
-                    version=1
-                end
-                
-                if method == nil then
-                    method="not_support_method"
-                end
+   local percentage = switch_controller.get_percentage()
+   if percentage and percentage >= 1 then
+        local uid = http_request.get_req_param("uid")
+        if not uid then
+            uid = 0
+        end
 
-                --ngx.log(0,method);
-                --ngx.log(0,version);
-                --ngx.log(0,METHOD_NEW[method]);
-                
-                ---- make sure method must be present -------
-                if method == nil then
-                     ngx.log(ngx.INFO, "method not allowed")
-                     ngx.exit(ngx.HTTP_NOT_ALLOWED )
-                end 
+        local hash = tonumber(uid) % 100
+        if hash <= percentage then
+            redirectPath = "apiaws";
+        end
+   end
  
-                if  METHOD_NEW[method] == 9 then
-                       ngx.header["Content-type"]="application/json;charset=utf-8"
-                       local rsp = '{"alg": "SALT_MD5","code": 112232323,"data": {},"md5": "f4a7a490bb6666b005008d795ed14e5d", "message": "请升级客户端版本!"}'
-                       ngx.say(rsp) 
-                       ngx.exit(ngx.HTTP_OK)
-                end
-                
-                if  METHOD_NEW[method] == 4 then
-                       redirectPath = "/activityApi";
-                       ngx.log(ngx.INFO,"request method is " .. request_method .. ", version is " .. version .. ",method is " .. method .. ", send to apigateway" .. redirectPath);
-                       if "GET" == request_method then
-                               ngx.exec(redirectPath,ngx.req.get_uri_args());
-                       elseif "POST"== request_method then
-                               ngx.exec(redirectPath);
-                       end
-                elseif METHOD_NEW[method] == 5 then
-                        ngx.log(ngx.INFO,"request method is " .. request_method .. ", version is " .. version .. ",method is " .. method .. ", send to activityApi");
-                        if "GET" == request_method then
-                                ngx.exec("/wechatApi",ngx.req.get_uri_args());
-                         elseif "POST"== request_method then
-                                ngx.exec("/wechatApi");
-                         end
-                else
-                  
-                  if "GET" == request_method then
-                                ngx.exec(redirectPath,ngx.req.get_uri_args());
-                  elseif "POST"== request_method then
-                                ngx.exec(redirectPath);
-                  end
+   route(redirectPath)
 
-                end
-        end
+end
+
+---- run ----- 
+main()
\ No newline at end of file
diff --git a/roles/openresty/files/java-nginx-config/nginx/conf/vhosts/api.yoho.cn.conf b/roles/openresty/files/java-nginx-config/nginx/conf/vhosts/api.yoho.cn.conf
index 084d42e..e7dab16 100644
--- a/roles/openresty/files/java-nginx-config/nginx/conf/vhosts/api.yoho.cn.conf
+++ b/roles/openresty/files/java-nginx-config/nginx/conf/vhosts/api.yoho.cn.conf
@@ -203,7 +203,18 @@ server {
         proxy_set_header Host $host;
     }
 
-  
+    location  /apiaws{
+        internal;
+        proxy_redirect off;
+        proxy_pass  http://java-aws/gateway;
+        proxy_set_header   X-Real-IP  $real_ip;
+        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header   Accept-Encoding "gzip";
+        proxy_http_version  1.1;
+        proxy_set_header   Connection "";
+        proxy_set_header Host $host;
+    }
+
 
     location = /activityApi{
         internal;