如何在 nginx 配置中使用位置指令重写 uri

How to rewrite uri with location directive in nginx config

我搜索了很多文章和帖子,但没有找到满足我要求的任何特定修复方法。因此,发布这个问题。

我的服务器上有 2 个位置 /p1 和 /p2。默认位置应为 /p1/index.html.

我想,当我访问 http://localhost:8080/p1 或 http://localhost:8080/p2 时,我应该能够从 http://localhost:8080 获取数据/p1/index.html,并且 URL 应该在浏览器中更改。

我们可以使用任何其他指令而不是位置指令来实现此目的吗?

以下是当前的 Nginx 配置:

server {

      listen      80;
      root        /usr/share/nginx/html;

      location / {
      try_files $uri /p1/index.html;
      }
      
      location /p1 {
      try_files $uri /p1/index.html;
      }      

      location /p2 {
      try_files $uri /p1/index.html;
      }
}

需要这样:

http://localhost:8080/p1 -->  http://localhost:8080/p1/index.html
http://localhost:8080/p2 -->  http://localhost:8080/p1/index.html

如有任何建议或帮助,我们将不胜感激。

从@BijayRegmi 的评论中得到一些线索。我几乎没有修改,以下更改对我有用。

server {

      listen      80;
      root        /usr/share/nginx/html;

      location / {
      try_files $uri /p1/index.html;
      }
      
      location /p1 {
      try_files $uri /p1/index.html;
      }      

      location /p2 {
      return 301 $scheme://$http_host/p1/index.html;
      }
}