現在、Angular4フロントエンドでアプリケーションを開発中です。私の生産目標は、フロントエンドをAWS S3バケットから静的コンテンツとして提供することです。アプリケーションがS3でホストされている静的コンテンツである場合の角度コンポーネントへのルーティング
実際には、アプリケーションの大きな問題である1つの例外がすべて発生しています。ユーザーが登録すると、電子メールアドレスを確認するリンクが付いた電子メールが送信されます。フロントエンドとして
https://myhostname.com/user/userguid?token=tokenvalue
のみページのindex.htmlが実際に存在する、静的なコンテンツとして提供していますので、このリンクは今404
生成クリックすると、次のようにリンクの形式はいくつかの研究の後、私は次のステップを踏んだ。 S3では、私は次のルーティングルールを持っています。
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>myhostname.com</HostName>
<ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
また、すべての404エラーをindex.htmlにリダイレクトするCloudFrontルールがあります。
誰かがmyhostname.com/user/userguid?token=tokenvalueにナビゲートすると、URLはmyhostname.com/#!/user/userguid?token=tokenvalueに書き直されますが、ユーザーはリダイレクトされますmyhostname.com/home(別名index.html)。
ハングル/フラグメントの値を受け取り、実際にそのコンポーネントにルーティングするために、角度アプリにどのような変更を加えることができますか?(リダイレクトするだけで、ユーザーはindex.htmlに戻ります)
フロントエンドが 'npm start'経由で提供されているときの開発では、うまくいきます。皆さんありがとう。
聖なる牛。これは実際には機能するかもしれません。それはhttp://myhostname-com.s3-website-us-east-1.amazonaws.com/some/pathの形式のリンクで動作します。今度はCloudFlareをもう一度楽しませるだけです。私は最終的な解決策を報告します。 –