Angular2 + Nginx 深度链接/路由问题

Posted

技术标签:

【中文标题】Angular2 + Nginx 深度链接/路由问题【英文标题】:Angular2 + Nginx Deep Linking/Routing Issue 【发布时间】:2017-03-05 23:00:49 【问题描述】:

我在我的 Apache Web 服务器上部署了一个 Angular2 应用程序,并使用以下 .htaccess,

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %REQUEST_FILENAME -f [OR]
    RewriteCond %REQUEST_FILENAME -d
    RewriteRule ^ - [L]
    RewriteRule ^ index.html [L]
</IfModule>

以及 index.html 中的附加配置,

<base href="/applicationName/">

应用程序能够毫无问题地加载,也没有重定向问题。

我现在正尝试在我的 nginx 服务器中设置相同的应用程序,但我似乎无法让它工作。

我知道 Nginx 中没有 .htaccess,如何将上面的 .htaccess 转换为在 Nginx 主配置中工作?

非常感谢!

【问题讨论】:

有人吗?谢谢! 这个问题已经被完整地记录在 Angular 文档中:Routed apps must fallback to index.html 【参考方案1】:

在我看来,Nginx 实际上比 apache 容易得多。一种方法是创建这样的服务器块。当然,前提是你可以访问服务器上 nginx 的配置文件。

server 
    listen       80;
    server_name  example.com;

    root   /path/to/your/index;
    index index.html;

    location / 
      try_files $uri $uri/ /index.html;
    

【讨论】:

嗨皮埃尔,我已经在我的默认配置文件中尝试了上述块,但仍然没有运气。 我可以加载主索引页面,但是当我尝试执行某个进程时,例如。登录,我收到错误 500,==> /var/log/nginx/error.log domain.com/application/login" 啊,还有一点需要注意的是,同一台服务器上会运行多个应用程序,所以将根设置为 /var/www/html 作为主文档根,我会添加浏览器地址栏中 / 后的应用程序名称。

以上是关于Angular2 + Nginx 深度链接/路由问题的主要内容,如果未能解决你的问题,请参考以下文章

带有标签的Angular2路由到页面锚点

从 Spring Web MVC 应用程序中排除 Angluar2 路由

Angular2嵌套路由父到子ES5不起作用

[PHP] 深度解析Nginx下的PHP框架路由实现

将 CSS 应用于活动路由器链接 [Angular 2]

路由组件的Angular 2“动画幻灯片”