Regex 正则表达式匹配$request\u uri变量中的NGINX url段

Regex 正则表达式匹配$request\u uri变量中的NGINX url段,regex,redirect,nginx,Regex,Redirect,Nginx,希望在这里能对这个重定向过程有所了解 我希望重定向所有的URL,除了那些符合以下条件的URL (单页) 及 (具有此结构的许多页面) 这些是站点地图中唯一包含“foo”的URL,所以我试图简单地匹配它们 我首先需要检查另一个条件变量(我正在检查移动设备的用户代理)-除了包含“foo”的页面之外,所有页面都应该重定向到新域 set $mobile_redirect NO; if (someconditionaluseragentstuff = someconditionaluseragentst

希望在这里能对这个重定向过程有所了解

我希望重定向所有的URL,除了那些符合以下条件的URL

(单页) 及 (具有此结构的许多页面)

这些是站点地图中唯一包含“foo”的URL,所以我试图简单地匹配它们

我首先需要检查另一个条件变量(我正在检查移动设备的用户代理)-除了包含“foo”的页面之外,所有页面都应该重定向到新域

set $mobile_redirect NO;

if (someconditionaluseragentstuff = someconditionaluseragentstuff) {
set $mobile_redirect YES;
}

if ($request_uri ~ "foo") {
set $mobile_redirect NO;
}

if ($mobile_redirect = YES) {
rewrite ^ https://www.somemobiledomain.com$request_uri? redirect;
break;
}

location/
块通常是与先前未与另一个
location
块匹配的URI相匹配的跳转。并使用
0
1
表示cleaner配置文件的真/假

Rembember 301是永久重定向,302是临时重定向

set $mobile_redirect 0;

if ($http_user_agent ~ "netscape navigator") {
  set $mobile_redirect 1;
}

# Specific URIs /about-us/foo/ and /foo/*
location ~ ^/(about-us/foo/$|foo/)  {
  # Do nothing
}

# Every other URI
location / {
  if ($mobile_redirect) {
    return 301 https://website.com$request_uri;
  }
}