Url rewriting Nginx将url参数重写到子域

Url rewriting Nginx将url参数重写到子域,url-rewriting,nginx,Url Rewriting,Nginx,有许多不同的url参数,我希望重定向到子域 mydomain.com/blog/title-of-the-post->blog.mydomain.com/title-of-the-post 及 mydomain com/taxonomy/term/id->mydomain.com/id 因此,逻辑基本上是重写,但我们希望获取并使用一些url。可以这样做吗?是的,您可以在重写时使用反向引用,例如: location /blog/ { rewrite ^/blog/(.*)$ http://b

有许多不同的url参数,我希望重定向到子域

mydomain.com/blog/title-of-the-post->blog.mydomain.com/title-of-the-post

mydomain com/taxonomy/term/id->mydomain.com/id


因此,逻辑基本上是重写,但我们希望获取并使用一些url。可以这样做吗?

是的,您可以在重写时使用反向引用,例如:

location /blog/ {
   rewrite ^/blog/(.*)$ http://blog.mydomain.com/$1 permanent;
}
同样的事情也适用于你的另一次重写

更新:

如果要保留博客部分,则不再更改$uri,只更改$host,这样就更容易了:

location /blog/ {
  rewrite ^ http://blog.mydomain.com/$uri permanent;
}
注:nginx标准变量列在

对于多个参数,您使用进一步的反向引用$2$3等等(只需确保您在正则表达式中要使用的部分周围有分组,即括号),例如:


这将与您博客url中的4位数年份相匹配,有关正则表达式和反向引用的更多信息,请参见示例

谢谢。如果您想保留博客(blog.mydomain.com/blog/-内容标题),该怎么办?如果您有多个url参数,如:mydomain.com/blog/first/second/thrid->blog.mydomain.com/second/third,该怎么办
location /blog/ {
  rewrite ^/blog/([0-9]{4})/(.*)$ http://blog.mydomain.com/$1/$2 permanent;
}