我们有一个 .NET 后端, Angular 5 应用程序和 nginx 服务器。在应用程序中注册帐户后,您会收到一封带有验证链接的电子邮件,如下所示:
[root]/register/verify?userId=blabla&code=blabla
点击链接后,我想要导航到Angular应用程序,但它在服务器上失败,你只能看到 nginx 404错误页面。
但是当您第一次导航到索引页面[root]
时,Angular应用程序会启动,当您手动将此部分/register/verify?userId=blabla&code=blabla
附加到基本网址时,它将起作用=>调用服务并验证电子邮件。
如果我做对了,当你从外面导航时,角度应用程序没有运行,因此nginx正在尝试处理网址并且失败了。我已尝试对Angular方面进行一些调整,然后按answer进行调整,但没有成功。
我想唯一的解决方案是一些nginx设置,我是对的吗?如果是这样的话,我需要做些什么才能让它发挥作用?
答案 0 :(得分:0)
我假设路由/register/verify
由Angular Router控制。好吧,当你在angular中使用路由时,你必须确保你的服务器可以处理Angular路由所做的所有路由,并确保你返回包含Angular App的HTML文件。
我认为您没有这样做,因此您的网络服务器中的路线无法解决,因此错误。
无论如何,你的用例有点奇怪。为什么要在客户端处理验证?我要做的是让.NET控制器处理该请求,然后,根据验证结果,重定向到角度应用程序,可能有一条路线来指示一切是否正常或是否有错误
在任何情况下,您都应确保服务器未处理的每个路由或返回静态文件都会返回角度应用程序的HTML页面,因此Angular路由器可以处理它。
如果你不这样做,如果用户浏览应用程序,然后由于某种原因重新加载页面,他们会遇到同样的错误
答案 1 :(得分:0)
Angular应用程序通常是SPA(单页应用程序),其中应用程序处理所有路由本身。需要配置服务器以便为404响应返回index.html
。通常index.html
被复制到404.html
,或者nginx / node服务器处理它。
我强烈建议您查看有关部署和服务器设置的官方文档:https://angular.io/guide/deployment#server-configuration