diff --git a/provider/kubernetes/kubernetes.go b/provider/kubernetes/kubernetes.go index 8f2a019d3..b2d43bcf7 100644 --- a/provider/kubernetes/kubernetes.go +++ b/provider/kubernetes/kubernetes.go @@ -538,7 +538,8 @@ func getRuleForPath(pa extensionsv1beta1.HTTPIngressPath, i *extensionsv1beta1.I if pathReplaceAnnotation != "" { return "", fmt.Errorf("rewrite-target must not be used together with annotation %q", pathReplaceAnnotation) } - rules = append(rules, ruleTypeReplacePath+":"+rewriteTarget) + rewriteTargetRule := fmt.Sprintf("ReplacePathRegex: ^%s/(.*) %s/$1", pa.Path, strings.TrimRight(rewriteTarget, "/")) + rules = append(rules, rewriteTargetRule) pathReplaceAnnotation = annotationKubernetesRewriteTarget } diff --git a/provider/kubernetes/kubernetes_test.go b/provider/kubernetes/kubernetes_test.go index eed8f7252..d955edf62 100644 --- a/provider/kubernetes/kubernetes_test.go +++ b/provider/kubernetes/kubernetes_test.go @@ -1371,7 +1371,7 @@ rateset: frontend("rewrite/api", passHostHeader(), routes( - route("/api", "PathPrefix:/api;ReplacePath:/"), + route("/api", "PathPrefix:/api;ReplacePathRegex: ^/api/(.*) /$1"), route("rewrite", "Host:rewrite")), ), frontend("error-pages/errorpages",