これについては、多くの質問があります。私はそれらの多くを読んだことがあり、そのほとんどはIISの書き換えを構成するweb.configファイルのサンプルを指しています。しかし、これがダウン二回投票して死んでいるようだ、だからではなく、それを復活しようとしているの、私はここに私の問題を説明するだろうと考えられてきた角度ルーティングIIS - 書き換えは浅いパスでのみ動作します
Angular 2 application not working when moved into IIS virtual directory
:私の問題に最も近いポストはこれのようです。角度コードがコマンドを介して構築されhttp://127.0.0.1/angular-app/
:ng build --base-href ./
、得られ/dist/
フォルダは、上記ローカルアドレスでホストされているコードである
コードでASP.NETアプリケーションとしてホストされています。
IISアプリケーションは、以下のweb.configファイルがあります。
http://127.0.0.1/angular-app/dashboard/
http://127.0.0.1/angular-app/heros/
:これは、これらのURLが予想されるコンテンツを返します設定で<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="./" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
を
URL書き換えルールがアプリケーションのベースディレクトリを正しく指しているため、vendor.js, main.js
などのファイルが見つかります。
しかし、URIが長くなると、リライトルールは、リンクされたファイルのフォルダパスを1段階だけバックアップするように見えるようです。例えば、URL
http://127.0.0.1/angular-app/heros/20/
は正しく
しかしベースディレクトリからetcファイル、それはvendor.js, main.js
をロードしようとしているように見えるビット深く掘りindex.html
を返すと、「アプリ・ロード」を表示します。 http://127.0.0.1/angular-app/heros/、ルートからまっすぐではなく、1つだけステップアップします。
これらのリンクもまた、index.html
ファイルにリダイレクトされるため、スクリプトはいずれもブラウザに配信されません。
私が代わりに./
の
<base href="/">
を使用し、それに応じて再書き込みルールを改正しようとしているが、これは、リンクされた記事で示唆したように、常にhttp://127.0.0.1/
にコンテンツをリダイレクトする効果があります、私はにベースHREFを変更:
<base href="/angular-app/">
、これはcorrecからindex.html
を返さtの位置。 しかし、etcファイルはまだサーバルート(http://127.0.0.1/)
から要求されたvendor.js, main.js
は、私は私がルートから正しいパスを指すようにindex.html
ファイルを編集するだけで手でこの問題を解決することができ仮定しているが、これはそうです修正よりむしろハックのように。
ここで起こって、なぜいただきました!誰も説明できます:私はほとんどの人にとって
<base href="/">
仕事ではありませんか?