2012-09-04 91 views
2

有許多不同的url參數,我希望重定向到一個子域。Nginx重寫url域名參數

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

MYDOMAIN-COM /分類/術語/ ID - > mydomain.com/id

因此,邏輯幾乎是重寫,但想要抓取和使用一些url。這可以做到嗎?

回答

3

是的,你可以使用反向引用您的重寫,如:

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

和同樣的事情worksfor你的其他重寫

UPDATE:

如果你要保持博客的部分

,你不再改變$ uri,只有$主機,它變得更容易:

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對正則表達式和反向引用

+0

感謝更多信息。如果你想保留博客(blog.mydomain.com/blog/-title-of-content)怎麼辦? – lata

+0

如果您有多個網址參數,請執行以下操作:mydomain.com/blog/first/second/thrid - > blog.mydomain.com/second/third – lata

+0

再次更新我的答案 – cobaco