diff --git a/.gitignore b/.gitignore
index 6e2013d1b448542ad653bb0febf98a6277f5d864..0b3673bf316a409b5caadf09f3fa58d42ad8f968 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,4 @@ classes
 vendor/
 
 logs/
-
+.vscode/
diff --git a/cluster/router.go b/cluster/router.go
index 30771fcfcf65e287c5e3433c620c5d42b960b6be..54a19695574f245fcac236e9308a2469f306a4f8 100644
--- a/cluster/router.go
+++ b/cluster/router.go
@@ -25,7 +25,7 @@ import (
 // Extension - Router
 
 type RouterFactory interface {
-	Router(common.URL) (Router, error)
+	Router(*common.URL) (Router, error)
 }
 
 type Router interface {
diff --git a/cluster/router/condition_router.go b/cluster/router/condition_router.go
index b5f8551e9c0b5c3c1cd24f7ec6104a876f1f3dde..3797782e962c40d75a5a6b99054e133aece5d0bb 100644
--- a/cluster/router/condition_router.go
+++ b/cluster/router/condition_router.go
@@ -40,14 +40,14 @@ const (
 //ConditionRouter condition router struct
 type ConditionRouter struct {
 	Pattern       string
-	Url           common.URL
+	Url           *common.URL
 	Priority      int64
 	Force         bool
 	WhenCondition map[string]MatchPair
 	ThenCondition map[string]MatchPair
 }
 
-func newConditionRouter(url common.URL) (*ConditionRouter, error) {
+func newConditionRouter(url *common.URL) (*ConditionRouter, error) {
 	var (
 		whenRule string
 		thenRule string
diff --git a/cluster/router/condition_router_test.go b/cluster/router/condition_router_test.go
index d24e0ec86abc9051c3b2cb37d60e285623035006..e60cda31791e097bb83b16da0ab30385662d95cd 100644
--- a/cluster/router/condition_router_test.go
+++ b/cluster/router/condition_router_test.go
@@ -54,24 +54,24 @@ func (bi *MockInvoker) GetUrl() common.URL {
 	return bi.url
 }
 
-func getRouteUrl(rule string) common.URL {
+func getRouteUrl(rule string) *common.URL {
 	url, _ := common.NewURL(context.TODO(), "condition://0.0.0.0/com.foo.BarService")
 	url.AddParam("rule", rule)
 	url.AddParam("force", "true")
-	return url
+	return &url
 }
 
-func getRouteUrlWithForce(rule, force string) common.URL {
+func getRouteUrlWithForce(rule, force string) *common.URL {
 	url, _ := common.NewURL(context.TODO(), "condition://0.0.0.0/com.foo.BarService")
 	url.AddParam("rule", rule)
 	url.AddParam("force", force)
-	return url
+	return &url
 }
 
-func getRouteUrlWithNoForce(rule string) common.URL {
+func getRouteUrlWithNoForce(rule string) *common.URL {
 	url, _ := common.NewURL(context.TODO(), "condition://0.0.0.0/com.foo.BarService")
 	url.AddParam("rule", rule)
-	return url
+	return &url
 }
 
 func (bi *MockInvoker) IsAvailable() bool {
diff --git a/cluster/router/router_factory.go b/cluster/router/router_factory.go
index f54042ae92252683205337b921cc24ef5519a8fd..a9794cb885badae98445ef4d7c0bbc2230d25d5f 100644
--- a/cluster/router/router_factory.go
+++ b/cluster/router/router_factory.go
@@ -32,6 +32,6 @@ type ConditionRouterFactory struct{}
 func NewConditionRouterFactory() cluster.RouterFactory {
 	return ConditionRouterFactory{}
 }
-func (c ConditionRouterFactory) Router(url common.URL) (cluster.Router, error) {
+func (c ConditionRouterFactory) Router(url *common.URL) (cluster.Router, error) {
 	return newConditionRouter(url)
 }