diff --git a/controllers/nginx/pkg/template/template.go b/controllers/nginx/pkg/template/template.go index cc21dccac..5afaf9a7f 100644 --- a/controllers/nginx/pkg/template/template.go +++ b/controllers/nginx/pkg/template/template.go @@ -237,7 +237,10 @@ func buildLocation(input interface{}) string { path := location.Path if len(location.Redirect.Target) > 0 && location.Redirect.Target != path { - return fmt.Sprintf("~* %s", path) + if path == "/" { + return fmt.Sprintf("~* %s", path) + } + return fmt.Sprintf("~* ^%s", path) } return path diff --git a/controllers/nginx/pkg/template/template_test.go b/controllers/nginx/pkg/template/template_test.go index fde02e3ef..244232306 100644 --- a/controllers/nginx/pkg/template/template_test.go +++ b/controllers/nginx/pkg/template/template_test.go @@ -45,12 +45,12 @@ var ( rewrite /(.*) /jenkins/$1 break; proxy_pass http://upstream-name; `, false}, - "redirect /something to /": {"/something", "/", "~* /something", ` + "redirect /something to /": {"/something", "/", "~* ^/something", ` rewrite /something/(.*) /$1 break; rewrite /something / break; proxy_pass http://upstream-name; `, false}, - "redirect /something-complex to /not-root": {"/something-complex", "/not-root", "~* /something-complex", ` + "redirect /something-complex to /not-root": {"/something-complex", "/not-root", "~* ^/something-complex", ` rewrite /something-complex/(.*) /not-root/$1 break; proxy_pass http://upstream-name; `, false}, @@ -60,14 +60,14 @@ var ( subs_filter '
' '