1. ホーム
  2. iis

[解決済み] HTML5モードのAngularJSアプリケーションをURLリライトするためにIISを設定するにはどうすればよいですか?

2022-05-11 21:30:45

質問

私は AngularJSのシードプロジェクト を追加し

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

を app.js ファイルに追加します。IIS 7 を設定して、すべてのリクエストを

http://localhost/app/index.html

で、これがうまくいくように。どうすればいいのでしょうか?

更新してください。

を発見し、ダウンロードし、インストールしたところです。 IIS URL Rewrite モジュール これで、私の目標を達成するのが簡単で明白になることを期待しています。

アップデート2 :

私が達成しようとしていることは、これに集約されると思います。 AngularJS 開発者向けドキュメント ):

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

アップデート3:

まだ作業中ですが、以下のような特定のURLをリダイレクトしない(リライトするルールを持つ)必要があることに気づきました。

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

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

すべてのファイルにルールを追加することなく、簡単にこれを達成する方法を知っている人はいますか?

アップデート4:

IIS URL Rewrite モジュールに2つのインバウンドルールを定義しています。最初のルールは

2つ目のルールは

現在、localhost/app/view1に移動するとページが読み込まれますが、サポートファイル(css、js、lib、partialsディレクトリ内のもの)もapp/index.htmlページに書き換えられているため、どのURLが使用されてもすべてがindex.htmlページとして戻ってくるようになっています。これは、これらのURLが2番目のルールによって処理されるのを防ぐはずの、私の最初のルールが機能していないということだと思います。...誰か教えてください。...私はとても孤独を感じています... :-(

どうすればいいですか?

質問にあるようなIISの受信ルールは動作します。私は、ブラウザのキャッシュをクリアして、次の行を私の <head> のセクションで、index.htmlのページが表示されます。

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

これは、localhostに複数のアプリケーションを持っているため、他のパーシャルへのリクエストが localhost/app/view1 ではなく localhost/myApplication/app/view1

これが誰かの役に立つといいのですが