nginx 在路径中间重写目录

nginx 在路径中间重写目录

我正在尝试执行以下 nginx 重定向

/p/username

/profile/username

看起来应该很简单,但我不知道如何隔离可以变量的用户名。

答案1

除非您实际上需要某些东西的用户名,或者您只需要重定向到该精确位置而不重定向到任何子目录,否则它非常简单 - 您根本不需要寻找用户名。

rewrite ^/p/(.*)$ /profile/$1 permanent;

但是为了论证的目的,如果您需要获取用户名并在用户名和路径的其余部分之间插入一些内容,您可以执行以下操作:

rewrite ^/p/([^/]+)(.*)$ /profile/$1/usersite$2 permanent;

第一对括号将捕获直到/p/(但不包括)以下斜杠之后的所有内容;.*将捕获字符串的其余部分。然后将它们重新添加到$1and $2- 因此/p/username/some-page.html变为/profile/username/usersite/some-page.html

相关内容