0

私は Angular 9.0 を使用しており、すべてがng serve -oモードで正常に動作していますが、使用してプロジェクトをビルドしようとするとng build、ルート ページしか表示できません。他のページに移動しようとすると、ローカルng serveモードで発生していない 404 エラーが返されます。問題を解決する方法の手がかりはありますか?

http://www.example.com/ << このページは正常に開きますが、 http://www.example.com/dashboard404 を返します

編集: 異なるシナリオをテストするために、何が問題を引き起こしているのかを確認するために、問題を特定することができました。routerLink を使用するとナビゲーションは正常に機能しますが、href または window.location.href を使用すると機能しません。href または window.location.href を使用するとクラッシュする理由はありますか?

4

1 に答える 1

2

ng serveへの URL リダイレクトを自動的に処理しますindex.html

次の追加により、app.module.ts問題が解決するはずです。

import { PathLocationStrategy, LocationStrategy } from '@angular/common';

...

providers: [ { provide: LocationStrategy, useClass: PathLocationStrategy } ]

https://angular.io/api/common/PathLocationStrategy

編集:

href は、ページ間を移動 (切り替え) するためにブラウザによって提供されるデフォルトの属性です。ページ全体が再ロードされ、現在の状態が失われます。

href と routerLink のより詳細な説明。

そのため、Apache サーバーでファイルをホストしている場合、存在しないディレクトリindex.html内のファイルを見つけようとするため、404 エラーが発生します。/dashboardこれを解決するには、すべてのトラフィックを に書き直す必要がありますindex.html書き換えに関するより詳細な説明。

于 2020-04-05T15:31:40.527 に答える