如何重写nginx url?

如何重写nginx url?,nginx,Nginx,我是ngnix的新手,可能我的问题很小,但我无法找到任何方法来确定问题在哪里: 我们将web应用程序从版本0.6.4迁移到了版本0.6.5。可以肯定的是,我们的用户不会在浏览器缓存中保留旧文件,我们会在url前面加上版本号以强制刷新:例如v0.6.5/place/(:placeId) 所以我需要的人谁书签的网址与旧的网址格式 v0.6.4/place/(:placeId)将被重定向到新url 我尝试以这种方式重写url: server { server_name qa.share.pla

我是ngnix的新手,可能我的问题很小,但我无法找到任何方法来确定问题在哪里:

我们将web应用程序从版本0.6.4迁移到了版本0.6.5。可以肯定的是,我们的用户不会在浏览器缓存中保留旧文件,我们会在url前面加上版本号以强制刷新:例如v0.6.5/place/(:placeId)

所以我需要的人谁书签的网址与旧的网址格式 v0.6.4/place/(:placeId)将被重定向到新url

我尝试以这种方式重写url:

server {
    server_name qa.share.place;
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server ipv6only=on;

    ssl_certificate /etc/letsencrypt/live/qa.share.place/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/qa.share.place/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/qa.share.place/fullchain.pem;
    include /etc/nginx/snippets/ssl.conf;
    #https://forum.nginx.org/read.php?2,267685,267686
    #keepalive_timeout    70;

    root /home/ubuntu/share_place/bin/static;
    index index.html index.htm index.nginx-debian.html;

    #return 302 https://www.share.place/upgrade;

    gzip on;
    gzip_min_length 1000;
    gunzip on;
    client_body_in_file_only clean;
    client_body_buffer_size 32K;

    sendfile off;
    send_timeout 300s;  
    client_max_body_size 1000M;


    #================ here is my issue
    rewrite ^(\/v0\.6\.4\/)(.*) /v0.6.5/$2 last;

    location /v0.6.5 {
            proxy_pass http://localhost:3000/ ;
    }
  }
问题是,我有一个404,我不知道如何记录url重定向(重写)的位置,以了解墙后发生了什么

重写后是否仍对路由位置/v0.6.5{}进行解释?或者重写后是否会跳过任何处理


请提供任何帮助

您的
/0.6.5/$2
缺少
v
。这是问题的错别字还是问题的原因?嗨,Richard,很抱歉耽搁了,我得找时间测试一下。你是对的问题中有一个输入错误,但我现在仔细检查了配置。它不会重定向(在v处于适当位置时:rewrite^(\/v0\.6\.4\/)(.*)/v0.6.5/$2 last;)。我更正了这个问题,这样就不会再有输入错误了。您可能会遇到浏览器缓存问题,因为您没有将用户重定向到新的URI。你可能会发现,
rewrite…permanent
rewrite…last
更有效。事实上,我遇到了人类大脑缺陷:):问题是我尝试了一个格式为…/0.6.4的url,但有时忘了在它后面加一个/。非常感谢RichardI上次将设置更改为重写^(\/v0\.6\.4)(.*)/v0.6.5$2;包含原始无参数URL的步骤