在Http Server中部署时如何获取深层链接以在Angular中工作

时间:2019-01-07 10:04:39

标签: angular angular-router

我正在使用Angular创建一个博客网站。配置角路由的方式是“ localhost:4200 / post / 42”将导航到发布组件,在该组件中,我根据url中提供的ID从MySql数据库中获取发布说明。在这种情况下为42。在开发模式下工作正常。但是,当我将其部署在Digital Ocean托管的apache2 Web服务器中时,当我在浏览器中直接发布链接(“ www.my-domain.com/post/42”)时,路由不起作用。它给出了404错误。我可以配置.htaccess文件,然后重定向到index.html页面,但这没有用。如果有人在社交网络中发布博客网址,则单击链接的人不会将他们带到特定博客文章,而是会将他们带到主页组件。

是否有解决此问题的方法?当开发人员使用Angular创建网站时,如何解决此问题?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

阅读LocationStrategy了解更多详细信息。