angular - Angular i18n nginx 重定向
问题描述
早上好,
我正在尝试部署我的 Angular 9 应用程序的本地化版本。我已将其部署在英语(主要语言)和西班牙语(定位语言)上
它工作得很好,除非我尝试访问一个没有 /es 或 /en-US 的 URL。
当我访问https://example.com/es/login时工作正常,但当我访问https://example.com/login时向我发送错误消息。我尝试了所有可能的 nginx 配置,但没有任何运气。
我不知道这是否可能,或者我只是在浪费时间......
我的 nginx.config
server {
listen 443 ssl;
server_name https://example.com;
ssl_certificate /etc/nginx/certs/certificate.crt;
ssl_certificate_key /etc/nginx/certs/certificate.key;
ssl on;
root /usr/share/nginx/html;
index index.html index.htm;
location /en-US/ {
alias /usr/share/nginx/html/en-US/;
try_files $uri$args $uri$args/ /en-US/index.html;
}
location /es/ {
alias /usr/share/nginx/html/es/;
try_files $uri$args $uri$args/ /es/index.html;
}
set $first_language $http_accept_language;
if ($http_accept_language ~* '^(.+?),') {
set $first_language $1;
}
set $language_suffix 'en';
if ($first_language ~* 'es') {
set $language_suffix 'es';
}
location / {
rewrite ^/$ https://$host/$language_suffix$request_uri;
}
}
server {
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}
提前致谢 :)
解决方案
我刚刚找到了解决方案,它对我有用:
只是改变
location / {
rewrite ^/$ https://$host/$language_suffix$request_uri;
}
至
location / {
rewrite ^/$ https://$host/$language_suffix$request_uri;
try_files $uri$args $uri$args/ /$language_suffix/index.html;
}
希望它对某人有用!
推荐阅读
- flutter - Flutter中的AppBar文本颜色
- r - R plot_ly:如何在同一轴上显示离散和非离散数据?
- sql - 使用集合操作 sql 查找共同元素
- android - 将依赖项包含在 Android 库中的最佳方法是什么?
- javascript - iOS 14 上的 Safari 在与模板标签或自定义元素一起使用时会中断日期/时间输入
- javascript - 使用 JQuery 检测带有动态 id 的输入点击
- php - CGI Web 应用程序,与变量作斗争
- python - 为什么 LinearRegression 的预测值与真实值完全相同?
- python - 在本地计算机上运行 dask 时,我应该创建一个“客户端”对象吗?
- javascript - 内部 html 脚本 window.addEventListener / window.onload 无法编辑特定的 div