将所有 url 重写为除 nginx 中的一个之外的另一个 url

Rat*_*mar 4 linux redirect nginx

我想要重定向

https://dev.abc.com/ to https://uat.abc.com/

https://dev.abc.com/first to https://uat.abc.com/first

https://dev.abc.com/second to https://uat.abc.com/

https://dev.abc.com/third/ to https://dev.abc.com/third/ (Point the same)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下配置并实现了前三个。但最后一个也重定向到 uat。在这种情况下任何人都可以帮助我吗?

server {
        listen 80;
        server_name dev.abc.com;
        root /var/www/

      location ~* ^/first{
      return 301 https://uat.abc.com$request_uri;
      }

      location ~* ^/second{
      return 301 https://uat.abc.com;
      }

      location ~* ^/{
      return 301 https://uat.abc.com$request_uri;
      }
Run Code Online (Sandbox Code Playgroud)

谁能帮我完成这个配置吗?

Ric*_*ith 5

location ~* ^/匹配以/- 开头的任何 URI,这是尚未与早期正则表达式位置规则匹配的任何 URI 。

要仅匹配 URI/而不是其他内容,请使用$运算符:

location ~* ^/$ { ... }
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,精确匹配位置块:

location = / { ... }
Run Code Online (Sandbox Code Playgroud)

请参阅此文档了解更多信息。