我正在使用Angular创建一个博客网站。配置角路由的方式是“ localhost:4200 / post / 42”将导航到发布组件,在该组件中,我根据url中提供的ID从MySql数据库中获取发布说明。在这种情况下为42。在开发模式下工作正常。但是,当我将其部署在Digital Ocean托管的apache2 Web服务器中时,当我在浏览器中直接发布链接(“ www.my-domain.com/post/42”)时,路由不起作用。它给出了404错误。我可以配置.htaccess文件,然后重定向到index.html页面,但这没有用。如果有人在社交网络中发布博客网址,则单击链接的人不会将他们带到特定博客文章,而是会将他们带到主页组件。
是否有解决此问题的方法?当开发人员使用Angular创建网站时,如何解决此问题?
答案 0 :(得分:0)
一种方法是使用HashLocationStrategy,方法是在RouterModule forRoot函数中添加{ useHash: true }
,如下所示:
@NgModule({
imports: [
...
RouterModule.forRoot(routes, { useHash: true }),
...
],
...
另一种方法(推荐)是将其保留为默认的 PathLocationStrategy ,并在构建中使用base-href="./"
,如下所示:
ng build --prod --base-href="./"
阅读LocationStrategy了解更多详细信息。