在Nginx中动态301将子域重定向到主域
问题描述:
如何在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;
答
你可以尝试像
server {
listen ....;
server_name ~^.*\.?(?<domain>.+\.com)$;
return 301 http://$domain$request_uri;
}
这将检查它有任何服务器名称:
- 一个或多个亚结构域或不(
^.*\.?
) - 随后通过任意的主域 .COM(
(?<domain>.+\.com)$
)
的?<domain>
保存主域 .COM在变量,所以你可以在return语句中使用它(domain1.com,domain2.com等)。
注意:我没有测试这个,但希望你能看到这个例子中的概念。
解决方案是使用[正则表达式服务器名称](http://nginx.org/en/docs/http/server_names.html#regex_names)在'return'语句中捕获您需要的部分域。 –