2017-03-29 15 views
0

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回読み取られたため、すべての種類の重複キー違反が発生していました(私が定義したすべてのキーについて、多かれ少なかれ)。

私はこの状況から抜け出すための助けに感謝します。

答えて

0

静的リソースフォルダを再構築し、管理用静的ファイルを含む実際のstaticサブフォルダを追加することで、問題を回避できました。

フロントエンド展開にはmanage.py collectstaticを使用できなくなりますが、追加のスクリプトを作成する必要があります。しかたがない。

関連する問題