2013-07-15 85 views
1

我是nginx新手。请帮我设置以下配置: site.com的根文件夹是/var/www(root /var/www)。 但是当有人打开http://site.com时,我想从/var/www/home加载内容。 如果有人试图http://site.com/anything,我想从/var/www/anything加载内容。nginx位置文件根目录外

我尝试以下

root /var/www; 
location =/{ 
root /var/www/home 
} 

,但没有奏效。

而且,我试图

location =/{ 
root /var/www/home 
} 

location/{ 
root /var/www 
} 

,这再次没有工作,

请帮

+0

不起作用,你的意思是你得到404或什么?并且是网站的php或rails或python,或者只是简单的html? –

+0

@Mohammad 它的htmt。当尝试第一个选项 'root/var/www; location =/{ root/var/www/home }' 它总是匹配/ var/www 在第二个位置/匹配总是。我认为site.com将匹配位置= /但它不会 – user2584292

+0

您是否在服务器范围内定义了索引? 'index index.html;' –

回答

2

试试这个:

location ~ ^/$ { 
    root /var/www/home; 
} 
location ~ ^(?!/$) { 
    root /var/www; 
} 

或本:

location/{ 
    root /var/www; 
    rewrite ^/$ /home/ break; 
} 
+0

尝试了第一个选项,但它总是取第一个位置。这是site.com和site.com/anything匹配 'location_ ^/$ { root/var/www/home;}' 第二个选项有效,它从/ var/www/home /但它无法加载位于/ var/wwww/home的css,js和img文件夹。它试图从/ var/www中读取这些文件夹。我通过删除'rewrite ^/$/home break'的结尾斜杠修改了重写。它完美的工作,但网址重定向到site.com/home'。我们可以做到这一点,而无需更改URL或不重写 – user2584292

+0

稍作改动:'重写^/$ /home/index.html中断;'。 – Melvyn

+0

尝试但没有运气index.html加载没有CSS和JS。 – user2584292