我正在用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="./"
阅读位置策略了解更多详情。