Ich versuche, eine Django/Angular-Anwendung unter IIS einzurichten.IIS überschreibt und Behandler Konflikt
Wenn ich eine ähnliche Anwendung unter nginx einstelle, übergebe ich alle URLs beginnend mit /api
(mein Backend) oder /admin
(die Django Admin-Schnittstelle) nach Django. Ich habe auch zwei Standorte festgelegt: /
und /static
- beide sind Aliase für den Ordner mit allen statischen Ressourcen.
Ich brauche /static
auch an Alias, weil Django Admin-Anwendung Referenzen Ressourcen /static/admin/...
Ich kann nicht IIS erhalten die gleiche Art und Weise zu arbeiten. Ich benutze wfastcgi
für die Schnittstelle mit Django und eine Rewrite-Regel, um /static
zurück zu /
zu mappen. Dies ist der relevante Teil meiner 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>
Dies funktioniert nicht. Wenn ich auf /admin
zugreife, fängt der Handler es ab und leitet die Anfrage an Django weiter, wie es sollte. Django gibt eine HTML-Seite mit Ressourcen unter /static/admin/base.css
zurück (zum Beispiel).
Wenn der Browser eine solche Ressource zu laden versucht, die Rewrite-Regel es fängt, umschreibt es /admin/base.css
, und dann der Handler fängt sie und leitet sie an Django, der nicht weiß, was /admin/base.css
ist und gibt einen 404.
Ich habe versucht, /static
ein virtuelles Verzeichnis, das auf das gleiche physische Verzeichnis wie das Stammverzeichnis verweist. Dies verursachte alle Arten von Konflikten, weil mein Stamm Web.config
wurde zweimal gelesen, was zu allen Arten von doppelten Schlüsselverletzungen (für alle Schlüssel, die ich definiert habe, mehr oder weniger).
Ich würde jede Hilfe bei der Beseitigung dieser Situation zu schätzen wissen.