nginx重写path中间的目录

我正在尝试执行以下nginxredirect

/p/username 

 /profile/username 

似乎应该是简单的,但我不知道如何隔离可变的用户名。

除非你确实需要某个用户名,否则你只需要redirect到那个确切的位置,没有子目录,那么这非常简单 – 你根本不需要查找用户名。

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

但是为了争辩,如果你需要获取用户名,比如在用户名和path的其他部分之间插入一些东西,你可以这样做:

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

第一对括号将在/p/ up(但不包括)下面的斜线之后捕获所有的内容; .*将捕获string的其余部分。 然后将它们重新添加到$1$2 – so /p/username/some-page.html成为/profile/username/usersite/some-page.html