2017-08-23 3 views
1

私のAngular 4アプリケーションでは、サイトへの初めての訪問時にURLにルート以外のパスを入力すると(つまりlocalhost:4200/projects)、アプリケーションはブートストラップされます正しいコンポーネントがブラウザの画面にレンダリングされます。角度のない最初のサイトのルート以外のルートへのアクセスは、ローカルではあるが生産中ではない

しかし、私がhttp://<my-domain>.com/projectsに行くと、404エラー(私のアプリケーションからではありません)が得られ、アプリケーションは決してブートストラップされません。

アプリケーションがAngularアプリケーションであることを認識し、rootまたはそれ以上のパスのアプリケーションをブートストラップするために、本番環境のサイトへの最初の訪問として、非ルートパスを訪問するにはどうすればよいですか?

答えて

2

なぜこれが起こっているのかの詳細については、my answer hereを参照してください。 短い抜粋:あなたのアプリのデプロイされたバージョンで

、それをホストしているWebサーバは があなたのルート・パスに対応し、それは見ている1つのHTMLファイル(index.htmlを)を、提供するために だけ方法を知っています。 2番目に直接 http://url-to-your-app/artにアクセスしようとすると、そのサーバーはリソースのパスとして認識できないため、 が処理できる404 が見つかりません。 IISの場合

、この問題を解決する最も簡単な方法は、あなたのweb.configファイルにこれを追加することです:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors> 
      <remove statusCode="404" subStatusCode="-1" />     
      <error statusCode="404" path="/index.html" responseMode="ExecuteURL" />     
     </httpErrors> 
    </system.webServer> 
</configuration> 

404が検出されるたびにこれが何を行うことは、あなたのindex.htmlで応答するようにIISを指示しています。

もう1つの方法は、URL書き換えをセットアップすることですが、書き換えモジュールをインストールして設定する必要があり、上記の解決策に比べて私の意見ではあまりにも面倒です。

+0

ありがとうございました@Andrei –

関連する問題