当部署在 Http Server 中时,如何让深层链接在 Angular 中工作



我正在用Angular做一个博客网站。角度路由的配置方式是"localhost:4200/post/42"将导航到一个帖子组件,我根据 url 中提供的 id 从 MySql 数据库中获取帖子描述,例如在这种情况下为 42。它在开发模式下工作正常。但是当我在数字海洋中托管的 apache2 Web 服务器中部署它时,当我直接在浏览器中发布链接("www.my-domain.com/post/42")时,路由不起作用。 它给出 404 错误。我可以配置 .htaccess 文件并重定向到索引.html页面,但这不符合我的目的。如果有人在社交网络中发布博客网址,那么点击链接的人不会将他们带到特定的博客文章,而是将他们带到主页组件。

这个问题有解决方案吗?当开发人员使用Angular制作网站时,他们如何解决这个问题?

一种方法是使用HashLocationStrategy,方法是在RouterModule forRoot函数中添加{ useHash: true },如下所示:

@NgModule({
  imports: [
    ...
    RouterModule.forRoot(routes, { useHash: true }),
    ...
  ],
  ...

另一种方法(推荐)是将其保留为默认的 PathLocationStrategy,并在构建中使用base-href="./",如下所示:

ng build --prod --base-href="./"

阅读位置策略了解更多详情。

最新更新