【发布时间】:2012-09-04 20:15:13
【问题描述】:
有许多不同的 url 参数,我希望重定向到子域。
mydomain.com/blog/title-of-the-post -> blog.mydomain.com/title-of-the-post
和
mydomain-com/taxonomy/term/id -> mydomain.com/id
所以逻辑几乎是重写,但想抓取并使用一些 url。这个可以吗?
【问题讨论】:
标签: 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。这个可以吗?
【问题讨论】:
标签: url-rewriting nginx
是的,您可以在重写中使用反向引用,例如:
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 了解有关正则表达式和反向引用的更多信息
【讨论】: