diff --git a/internal/ingress/controller/template/template.go b/internal/ingress/controller/template/template.go
index dfcf1227b..39cfa5ddb 100644
--- a/internal/ingress/controller/template/template.go
+++ b/internal/ingress/controller/template/template.go
@@ -470,7 +470,6 @@ func buildProxyPass(host string, b interface{}, loc interface{}, dynamicConfigur
var xForwardedPrefix string
if location.Rewrite.AddBaseURL {
- // path has a slash suffix, so that it can be connected with baseuri directly
bPath := fmt.Sprintf("%s$escaped_base_uri", path)
regex := `(<(?:H|h)(?:E|e)(?:A|a)(?:D|d)(?:[^">]|"[^"]*")*>)`
scheme := "$scheme"
@@ -494,15 +493,16 @@ subs_filter '%v' '$1' ro;
// ie /something to /
return fmt.Sprintf(`
rewrite (?i)%s(.*) /$1 break;
-rewrite (?i)%s / break;
+rewrite (?i)%s$ / break;
%v%v %s%s;
%v`, path, location.Path, xForwardedPrefix, proxyPass, proto, upstreamName, abu)
}
return fmt.Sprintf(`
rewrite (?i)%s(.*) %s/$1 break;
+rewrite (?i)%s$ %s/ break;
%v%v %s%s;
-%v`, path, location.Rewrite.Target, xForwardedPrefix, proxyPass, proto, upstreamName, abu)
+%v`, path, location.Rewrite.Target, location.Path, location.Rewrite.Target, xForwardedPrefix, proxyPass, proto, upstreamName, abu)
}
// default proxy_pass
diff --git a/internal/ingress/controller/template/template_test.go b/internal/ingress/controller/template/template_test.go
index 3fc2ecf08..7068d295e 100644
--- a/internal/ingress/controller/template/template_test.go
+++ b/internal/ingress/controller/template/template_test.go
@@ -123,6 +123,7 @@ var (
"~* /",
`
rewrite (?i)/(.*) /jenkins/$1 break;
+rewrite (?i)/$ /jenkins/ break;
proxy_pass http://upstream-name;
`,
false,
@@ -137,7 +138,7 @@ proxy_pass http://upstream-name;
`~* ^/something\/?(?.*)`,
`
rewrite (?i)/something/(.*) /$1 break;
-rewrite (?i)/something / break;
+rewrite (?i)/something$ / break;
proxy_pass http://upstream-name;
`,
false,
@@ -152,6 +153,7 @@ proxy_pass http://upstream-name;
"~* ^/end-with-slash/(?.*)",
`
rewrite (?i)/end-with-slash/(.*) /not-root/$1 break;
+rewrite (?i)/end-with-slash/$ /not-root/ break;
proxy_pass http://upstream-name;
`,
false,
@@ -166,6 +168,7 @@ proxy_pass http://upstream-name;
`~* ^/something-complex\/?(?.*)`,
`
rewrite (?i)/something-complex/(.*) /not-root/$1 break;
+rewrite (?i)/something-complex$ /not-root/ break;
proxy_pass http://upstream-name;
`,
false,
@@ -180,6 +183,7 @@ proxy_pass http://upstream-name;
"~* /",
`
rewrite (?i)/(.*) /jenkins/$1 break;
+rewrite (?i)/$ /jenkins/ break;
proxy_pass http://upstream-name;
set_escape_uri $escaped_base_uri $baseuri;
@@ -197,7 +201,7 @@ subs_filter '(<(?:H|h)(?:E|e)(?:A|a)(?:D|d)(?:[^">]|"[^"]*")*>)' '$1]|"[^"]*")*>)' '$1]|"[^"]*")*>)' '$1]|"[^"]*")*>)' '$1]|"[^"]*")*>)' '$1