【问题标题】:Nginx rewrite url arguments to sub domainNginx 将 url 参数重写为子域
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。如果你想保留博客(blog.mydomain.com/blog/-title-of-content)怎么办?
    • 如果你有多个 url 参数,比如:mydomain.com/blog/first/second/thrid -> blog.mydomain.com/second/third
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2017-11-13
    • 2019-02-07
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多