nginx实现二级域名301重定向到对应顶级域名目录上

有一个网站,由于之前没规划好,把网站上的很多栏目做成了二级域名。比如:
mm.xxoo.com 对应的目录是 www.xxoo.com/mm/
gg.xxoo.com 对应的目录是 www.xxoo.com/gg/

由于运营思路调整,需要取消二级域名,那么此时不能唐突地直接去掉解析,改掉网站上的url,这样之前做的推广,发的外链效果就完全失效了,且造成网站大量死链。因此,唯一的方法是做301重定向。

在nginx下,找到mm.xxoo.com对应的conf配置文件,在配置文件里添加如下代码:

location ~* ^/(.*) {
    rewrite ^/(.*)$ http://www.xxoo.com/mm/$1 permanent;
} 

.

在gg.xxoo.com对应的conf配置文件里,添加如下代码:

location ~* ^/(.*) {
    rewrite ^/(.*)$ http://www.xxoo.com/gg/$1 permanent;
} 

以此类推,其他二级域名也做类似处理。这样就实现了 xx.xxoo.com/及其下面所有的页面 301重定向 到了www.xxoo.com/xx/及其下面所有的页面.

ps:在nginx新建二级域名虚拟主机时,我习惯了给每个二级域名添加一个conf,所以上面是需要一个个conf修改的,虽然繁碎,但还是很保险。