Nginx重写子域的url参数

时间:2012-09-04 20:15:14

标签: 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

所以逻辑几乎是一个重写,但想抓住并使用一些网址。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

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

location /blog/ {
   rewrite ^/blog/(.*)$ http://blog.mydomain.com/$1 permanent;
}

同样的事情适用于你的其他重写

更新:

如果你想保留博客部分,你不再改变$ uri,只有$ host,它会变得更容易:

location /blog/ {
  rewrite ^ http://blog.mydomain.com/$uri permanent;
}

注意:nginx标准变量列在http://wiki.nginx.org/HttpCoreModule#Variables

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

location /blog/ {
  rewrite ^/blog/([0-9]{4})/(.*)$ http://blog.mydomain.com/$1/$2 permanent;
}

与博客网址中的4位数年份匹配,例如,请参阅http://www.regular-expressions.info/brackets.html了解有关正则表达式和反向引用的更多信息