2013-10-01 230 views

回答

12

两个选项添加到您的下方配置...

选项1:

server { 
    ... 
    server_name example.com; 
    ... 
    location /siteA { 
     root /var/www/siteA; 
     ... 
    } 
    location /siteB { 
     root /var/www/siteB; 
     ... 
    } 
    ... 
} 

选项2:

server { 
    ... 
    server_name example.com; 
    ... 
    location /siteA { 
     return  301 http://siteA.example.com$request_uri; 
    } 
    location /siteB { 
     return  301 http://siteB.example.com$request_uri; 
    } 
    ... 
} 

首先选择简单地从example.com/siteA在供应此外,第二选项重定向到siteA.example.com

+0

优秀的Dayo。再一次澄清。每个服务器的配置都保存在一个站点可用的目录中的单独文件中。例如:sites-available/siteA.conf,sites-available/siteB.conf。在上面的选项2中,每个301都会查找siteX.example.com。通过使用localhost来避免这种查找的最好方法是什么?像301 http://siteB.localhost$request_url,然后在siteB.conf中有server_name siteB.localhost,siteB.example.com。 – Alkaline

+0

澄清。取决于所使用的位置,重定向到siteX的配置文件的最佳方式是什么?例如。 location/siteB最终使用siteB.conf。 – Alkaline

+1

重定向是微不足道的,遵循良好的做法。如果你真的想避免这种情况,那就选择选项1.就个人而言,我会使用选项2,因为允许多条路线通向资源(通常是出于历史原因),每个资源应该通过一条路线单独。因此,可以从'example.com/SiteA/somefile.ext'和'siteA.example.com/somefile.ext'到达'/ var/www/siteA/somefile.ext',但它应该只能一直服务来自其中一个和通过其他路线请求的用户应该相应地重定向。 – Dayo