HTML5モードでAngularJSアプリケーションをURL書き換えするようにIISを設定するにはどうすればよいですか?


Answers

DOの質問に示されているIISインバウンドルールが動作します。 ブラウザのキャッシュをクリアして、index.htmlページの<head>セクションの上に次の行を追加する必要がありました。

<base href="/myApplication/app/" />

これは、私がlocalhostに複数のアプリケーションを持っていて、他の部分へのリクエストがlocalhost/myApplication/app/view1代わりにlocalhost/myApplication/app/view1

うまくいけば、これは誰かを助ける!

Question

私はAngularJSの種子プロジェクトを持っており、

$locationProvider.html5Mode(true).hashPrefix('!');

app.jsファイルに追加します。 私はすべての要求を

http://localhost/app/index.html

これは私のために働くように。 これはどうすればいいですか?

更新:

私はIIS URL書き換えモジュールを発見し、ダウンロードしてインストールしました。これにより、私の目標を達成するのが簡単かつ明白になることを願っています。

アップデート2

私はこれが私が達成しようとしていることを要約していると思います( AngularJS Developerのドキュメンテーションから取りました):

このモードを使用するには、サーバー側でURLの書き換えが必要です。基本的には、すべてのリンクをアプリケーションのエントリポイント(例:index.html)に書き換える必要があります。

アップデート3:

私はまだこれに取り組んでおり、私はリダイレクトしないでください

http://localhost/app/lib/angular/angular.js
http://localhost/app/partials/partial1.html

したがって、css、js、libまたはpartialsディレクトリにあるものはリダイレクトされません。 他のすべてはapp / index.htmlにリダイレクトする必要があります

誰もが、単一のファイルごとにルールを追加することなく簡単にこれを達成する方法を知っていますか?

アップデート4:

IIS URL書き換えモジュールで定義された2つの受信ルールがあります。 最初のルールは次のとおりです。

2番目のルールは次のとおりです。

これで、localhost / app / view1に移動すると、サポートされているファイル(css、js、lib、およびpartialsディレクトリ内のファイル)もapp / index.htmlページに書き換えられます。どのURLが使用されていても、index.htmlページとして返されます。 私は、これは第2のルールでこれらのURLが処理されないようになっている私の最初のルールを意味すると思います。 ...誰でも? ...私は孤独を感じる... :-(




これらの2つの条件だけを持つ問題:

  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />

{REQUEST_FILENAME} が物理的にディスク上に存在している間だけ動作します。 これは、誤った名前のパーシャルビューに対する要求が、角度を2度ロードする原因となる404の代わりにルートページを返すシナリオが存在する可能性があることを意味します(特定のシナリオでは、厄介な無限ループを引き起こす可能性があります)。

したがって、トラブルシューティングを難しくする問題を回避するため、いくつかの安全な「フォールバック」ルールを推奨します。

  <add input="{REQUEST_FILENAME}" pattern="(.*?)\.html$" negate="true" />
  <add input="{REQUEST_FILENAME}" pattern="(.*?)\.js$" negate="true" />
  <add input="{REQUEST_FILENAME}" pattern="(.*?)\.css$" negate="true" />

終了するファイルに一致する条件

<conditions>
  <!-- ... -->
  <add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" />
</conditions>



Links