2017-09-27 133 views
0

如何在Nginx中重定向主域的所有子域?在Nginx中動態301將子域重定向到主域

aaa.domain1.com - > domain1.com

www.domain2.com - > domain2.com

bbb.domain3.com - > domain3.com

server_name *.domain1.com *.domain2.com *.domain3.com *.domain4.com; 
return 301 http://XXX$request_uri; 
+0

解決方案是使用[正則表達式服務器名稱](http://nginx.org/en/docs/http/server_names.html#regex_names)在'return'語句中捕獲您需要的部分域。 –

回答

1

你可以嘗試像

server { 
    listen  ....; 
    server_name ~^.*\.?(?<domain>.+\.com)$; 
    return  301 http://$domain$request_uri; 
} 

這將檢查它有任何服務器名稱:

  • 一個或多個亞結構域或不(^.*\.?
  • 隨後通過任意的主域 .COM((?<domain>.+\.com)$

?<domain>保存主域 .COM在變量,所以你可以在return語句中使用它(domain1.com,domain2.com等)。

注意:我沒有測試這個,但希望你能看到這個例子中的概念。

+0

謝謝,但我必須在server_name中使用靜態服務器名稱,以避免同一臺服務器上的其他服務器名稱出現問題。 – nenad007

+0

好的,但你可以用你的靜態域名(例如'(domain1.com | domain2.com | domain3.com | domain4.com)'在正則表達式中替換任意域名('。+ \。com') – Moema