2017-08-09 45 views
1

,到目前爲止,我有這樣的:301重定向nginx的有或無我想重定向到一個子域每次調用mydomain.com/blog2參數

location ^~ /blog2/$ { 
    return 301 https://blog.mydomain.com$request_uri$is_args$args; 
} 

這僅適用於mydomain.com/blog2/ ,/ blog2沒有結尾斜線或/ blog2/somethingelse中斷。/blog2/somethingelse /去blog.mydomain.com沒有somethingelse部分。

如何能夠做到:

mydomain.com/blog2     --> blog.mydomain.com 
mydomain.com/blog2/     --> blog.mydomain.com 
mydomain.com/blog2/something   --> blog.mydomain.com/something 
mydomain.com/blog2/something/   --> blog.mydomain.com/something 
mydomain.com/blog2/something?foo=bar --> blog.mydomain.com/something?foo=bar 

回答

1

如果您需要刪除URL的/blog2/一部分,你不能因爲它包含原始的URI完全使用$request_uri。您需要使用正則表達式來捕獲URI所需的部分,作爲locationrewrite語句的一部分。

使用正則表達式location聲明:

location ~ ^/blog2(?:/(.*))?$ { 
    return 301 https://blog.mydomain.com/$1$is_args$args; 
} 

這可能是一樣的:

rewrite ^/blog2(?:/(.*))?$ https://blog.mydomain.com/$1 permanent; 

this document更多。