IISでDjango/Angularアプリケーションを設定しようとしています。IISの書き換えとハンドラの衝突
nginxで同様のアプリケーションを設定すると、/api
(私のバックエンド)または/admin
(Django管理インターフェース)で始まるすべてのURLをDjangoに渡します。私はまた、2つの場所を設定します:/
と/static
- 両方とも、すべての静的リソースを持つフォルダのエイリアスです。
私はIISが同じように動作させることはできません/static/admin/...
でDjangoのadminアプリケーションの参照リソースので、私は、あまりにも、/static
をエイリアスする必要があります。私はwfastcgi
をDjangoとのインターフェースに使用しており、書き換えルール/static
を/
に戻すように書き換えています。これは私の関連部分ですWeb.config
:
<rewrite>
<rules>
<rule name="Static Perfix" stopProcessing="true" >
<match url="^static/(.+)" />
<action type="Rewrite" url="{R:1}" />
</rule>
</rules>
</rewrite>
<handlers>
<add name="Admin"
path="/admin"
verb="*"
modules="FastCgiModule"
scriptProcessor="..."
resourceType="Unspecified" />
</handlers>
これは機能しません。 /admin
にアクセスすると、ハンドラはそれをキャッチしてDjangoに要求を転送します。 Djangoは、例えば/static/admin/base.css
にあるリソースを持つhtmlページを返します。
ブラウザは、書き換えルールがそれをキャッチし、そのようなリソースをロードしようとすると、/admin/base.css
にそれを書き換えて、その後、ハンドラはそれをキャッチし/admin/base.css
が何であるかを知らないジャンゴ、それを転送し、404
私は/static
仮想ディレクトリをルートディレクトリと同じ物理ディレクトリを指しているようにしようとしました。ルートWeb.config
が2回読み取られたため、すべての種類の重複キー違反が発生していました(私が定義したすべてのキーについて、多かれ少なかれ)。
私はこの状況から抜け出すための助けに感謝します。