2017-09-27 135 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