如何在 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;
}
}
我搜索了很多文章和帖子,但没有找到满足我要求的任何特定修复方法。因此,发布这个问题。
我的服务器上有 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;
}
}