2

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

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

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

所以逻辑几乎是重写,但想要抓取并使用一些 url。这可以做到吗?

4

1 回答 1

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以获取有关正则表达式和反向引用的更多信息

于 2012-09-05T12:08:16.960 回答