umi
# 非根目录部署
先看这样一个nginx配置
location /{
root /usr/local/var/www/;
index index.html;
}
2
3
4
访问http://example.com根目录时,就会命中这个区块,index index.html;
是默认文件,也就说访问http://example.com时,就会找/usr/local/var/www/index.html
这个文件。
如果nginx没有配置index index.html
,也就说没有指定默认文件,那当访问这个目录时,就会报404。
如果访问http://example.com/logo.png,对应到服务器会去找/usr/local/var/www/logo.png
。
综上,如果没有配置默认访问文件,对访问目录的URL会有影响,对访问真实文件的URL没影响。
// umi config.js
{
base: '/unity_demonstrate/', // 让um.js找对应路由
publicPath: '/unity_demonstrate/', // 让css,js加上后缀
}
2
3
4
5
将项目存在目录 /usr/local/var/www/unity_demonstrate下
// nginx.config
location /unity_demonstrate/ {
root /usr/local/var/www/;
try_files $uri $uri/ /unity_demonstrate/index.html;
}
2
3
4
5
这个nginx配置定义了一个名为"location /unity_demonstrate/"的区块,它指定了以"/unity_demonstrate/"开头的URL请求的处理方式。
首先,它指定了根目录为"/usr/local/var/www/"。这意味着该区块内的文件都将从这个目录读取。
然后,"try_files $uri $uri/ /unity_demonstrate/index.html"语句指定了如何处理URL请求。
1.尝试访问请求的URL ($uri(如:http://example.com/unity_demonstrate/example.html))。 也可能是js、css、png等静态文件
2.如果找不到,尝试访问URL后面加上斜线 ($uri/),当作目录去处理,去匹配默认请求文件,这里没配置index index.html;
所以肯定找不到
3.如果仍然找不到,则返回"/usr/local/var/www/unity_demonstrate/index.html"这个文件。