我正在开发一个 Angular 5 应用程序,我已经构建了它并将dist/
目录的内容放到了 docker 容器上。
当我使用应用程序的导航(利用routerLink
)导航应用程序时,找到您要查找的页面没有问题。没有问题的原因是因为 Angular 根据用户交互操作 DOM。
但是,如果用户点击 index.html 以外的页面上的刷新按钮,Web 服务器将发送 404 页面。这是因为Apache(或者我猜任何服务器操作系统)正在寻找一个不存在的页面"文件"。Angular的路由器位于发送到浏览器的JavaScript包中。由于它不在服务器上,因此当服务器收到对非 index.html 路径的请求时,它在 .htaccess 中找不到任何内容,只是返回 404。
此问题的一个解决方案是使用 Angular 应用程序的所有路由更新 .htaccess 文件,以便将所有路由重定向到 index.html。不过这似乎有点混乱。您将如何保留对特定页面的请求并将其提供给 Angular?
所以问题是:有没有办法让 apache 知道 Angular 应用程序中的内部页面并在该页面上加载 Angular 应用程序?还是.htaccess修改是唯一的方法?
.htaccess
重写几乎是goto解决方案。 这个页面很好地描述了它。