diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocator.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocator.java index 273f7eab..12f8e189 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocator.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocator.java @@ -138,7 +138,7 @@ public class SimpleRouteLocator implements RouteLocator, Ordered { } String targetPath = path; String prefix = this.properties.getPrefix(); - if (path.startsWith(prefix) && this.properties.isStripPrefix()) { + if (path.startsWith(prefix + "/") && this.properties.isStripPrefix()) { targetPath = path.substring(prefix.length()); } if (route.isStripPrefix()) { diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocatorTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocatorTests.java index 0ba3d486..7519ebad 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocatorTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocatorTests.java @@ -24,6 +24,7 @@ import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import org.junit.Test; import org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute; @@ -58,6 +59,16 @@ public class SimpleRouteLocatorTests { assertThat(routes, hasSize(1)); } + @Test + public void testStripPrefix() { + ZuulProperties properties = new ZuulProperties(); + properties.setPrefix("/test"); + properties.setStripPrefix(true); + RouteLocator locator = new FilteringRouteLocator("/", properties); + properties.getRoutes().put("testservicea", new ZuulRoute("/testservicea/**", "testservicea")); + assertEquals("/test/testservicea/**", locator.getRoutes().get(0).getFullPath()); + } + @Test public void test_getMatchingRouteFilterRouteAcceptor() { RouteLocator locator = new FilteringRouteLocator("/", this.zuul);