简体   繁体   中英

Nginx redirect dynamic URLs one path to another

I want to check if a parameter is present in a url in nginx and then rewrite. How can i do that?

The color is dynamic in the URLs

For eg

  1. If url is http://website.com/lunch-box/xxxxxabc then redirect user to http://website.com/lunch-box/ .

  2. If URL is http://website.com/lunch-box/xxxxxabc/ABCD123 no need to redirect. Need to load as it is.

I want to redirect if URL is matched. and xxxxxabc is dynamic text.

nginx version: nginx/1.16.1

# rewrite direct children of /lunch-box but not grandchildren+
rewrite  ^(/lunch-box/)[^/]+/?$  $1  last;

Walking through the regex ^(/lunch-box/)[^/]+/?$

  • ^ matches the start of a string ( rewrite rules match against the path, not the full URI)
  • (/lunch-box/) matches the literal text /lunch-box/ and saves it for $1
  • [^/]+ matches one or more characters that are not a forward slash
  • /? matches zero or one forward slash
  • $ matches the end of the string

This strips off the path past what we've saved as $1 , but only when that path is a direct child.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM