我有一个 Angular2 SPA,我将语言作为后缀添加到 URL,如下所示:
www.mywebsite.com/en
如果我以这种方式直接从 nodejs web 服务器加载 -> www.mywebsite.com:4500/en,那么请求当然会被 angular 正确处理。
现在,当我使用 nginx 时,我不知道如何告诉 nginx 带有语言后缀的 URL 必须由 index.html 处理。
在 nginx 配置文件中,我设置了一些其他位置,它们运行良好。只需要这个配置。
通过以下设置,nginx回复404,并且nginx错误日志文件报告:
appfolder/dist/client/en(没有此文件或目录)
server {
listen 80 default_server;
listen [::]:80 default_server;
root /appfolder/dist/client;
index index.html;
location ~ /(fr|en|es|it) {
root /appfolder/dist/client;
}
location /{
return 301 /en$uri;
}
other location's without conflict with this
}
我通过谷歌搜索尝试了很多其他配置,但没有结果。
我怎样才能告诉 nginx 我希望带有语言的 URL 必须由索引文件处理?
答案1
我发现了一个似乎有效的解决方案,欢迎提供更好的解决方案
以这种方式设置位置
location / {}
location /it {
alias /project/dronedesign/dist/client;
index index.html;
try_files $uri $uri/ /index.html;
}
location /en {
alias /project/dronedesign/dist/client;
index index.html;
try_files $uri $uri/ /index.html;
}