将所有子域重定向到Apache中的www.DOMAIN.net(或更好:nginx)

时间:2013-05-03 12:47:32

标签: apache nginx

通常我这样做是为了将“DOMAIN.net”重定向到“www.DOMAIN.net”,它运行正常。

<VirtualHost *:8080>
        ServerAdmin webmaster@DOMAIN.net
        ServerName DOMAIN.net
        RedirectPermanent / http://www.DOMAIN.net/
</VirtualHost>

现在,对于一个新项目,我还想将所有子域重定向到www.DOMAIN.net并尝试这样:

<VirtualHost *:8080>
        ServerAdmin webmaster@DOMAIN.net
        ServerName DOMAIN.net
        ServerAlias *.DOMAIN.net
        RedirectPermanent / http://www.DOMAIN.net/
</VirtualHost>

但是这让我进入了一个无限重定向的循环,可能是因为* .DOMAIN.net也适用于“www.DOMAIN.net”并且陷入了循环。

我可以以某种方式在Alias中获得异常,以确保不应将www子域重定向到自身吗?

编辑:我想到我也使用nginx,也许在那里完成它会更好。我目前使用

server {
        server_name DOMAIN.net;
        rewrite ^(.*) http://www.DOMAIN.net$1 permanent;
}

在nginx配置中。如何在nginx配置中重定向所有(但www)子域?

1 个答案:

答案 0 :(得分:1)

如果您想在nginx上执行此操作,则需要将配置更改为以下内容:

server {
    server_name DOMAIN.net www.domain.net;
    if ($host !~* ^www\.) { 
        rewrite ^(.*) http://www.DOMAIN.net$1 permanent;
    }
}   

这应该是开箱即用的。遗憾的是,在这种情况下,没有办法避免使用if。