Nginx 中的内部重写不起作用,并且重定向

Nginx 中的内部重写不起作用,并且重定向

你好,我想要一个重写规则,但我不想重定向它,也不想请求一个 URL,但从另一个 URL 加载不同的内容。所以,我认为重写指令中的 last 和 break 标志是一个很好的解决方案。但是,它总是被重定向,我搜索了这个问题,他们说如果新的 URL 不是来自 nginx 实例,它就会重定向。下面是我的配置的几行:

...
rewrite ^(/\w+/$)(.+\.php) /$2 last;
proxy_pass upstream_name:80;
...

我想问的是如何使用重写但不重定向?

更新:例如,我想创建一个新的类似 /link/asd 的链接,但我的 Web 应用程序中没有 /link/asd。我希望我的 /link/asd 链接从 /asd 链接加载资源。然后,我认为重写最后一个标志是一个很好的解决方案。如果我的理解是错误的,请纠正我并解释一下。谢谢

答案1

如果您想要精确重写/link/example/exampleexample其中 为任意值,您可以使用以下命令rewrite

rewrite ^/link/(.+)$ /$1 last;

这也将匹配/link/example/something/else,因为.+匹配字符串结尾 ( $) 之前的任何字符。如果要限制捕获组中允许的字符(例如,/从捕获组中排除),可以使用[^/]+正则表达式的符号。

相关内容