LoginSignup
1
1

More than 5 years have passed since last update.

Angular RouterアプリケーションをAzure Web Appsにデプロイして動かす

Last updated at Posted at 2017-12-01

背景

Angular Routerとは

Angular2からリリースされた機能で、アプリケーションの状態を宣言的に特定することができ、コンポーネントとURLがリンクされる。Single Page Applicationでありながら通常のWebページと同様に特定のWebページに直接アクセスすることもできる。

やりたいこと

ng serveやnpm startでローカル開発したものAzure App ServiceのWeb Appsにデプロイして公開したい。

問題

ローカルの開発環境では問題なくルーティングできているのに、Web Appsにデプロイすると以下のような挙動になってしまう。

  • F5でリロードした時に"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."という404的なメッセージが表示される。
  • 特定のコンポーネント(にリンクされたページURL)を直接表示しようとすると、やはり上記の404的なメッセージが表示される。

対応

web.configに設定追加

アプリケーションroot直下のweb.configファイルに以下設定を追加することでローカルと同様の挙動となることを確認できた。

<configuration>
    <system.webServer>
        <rewrite>
          <rules>
            ...省略...

            <rule name="Index Rule" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Rewrite" url="/index.html" />
            </rule>

            ...省略...
            </rules>
        </rewrite>
    </system.webServer>
    ...省略...
</configuration>

Azureに限らず普通にIISにデプロイする場合や、他のPaaSにデプロイする場合でも同様のことが起こるかもしれないが、試していない。
どなたか分かる方がいれば教えてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1