IIS переписывает и обрабатывает конфликт

Я пытаюсь настроить приложение Django/Angular под IIS.

Когда я устанавливаю аналогичное приложение под nginx, я передаю все URL, начинающиеся с /api (мой бэкэнд) или /admin (интерфейс администратора Django) для Django. Я также установил два местоположения: / а также /static - оба являются псевдонимами для папки со всеми статическими ресурсами.

Мне нужен псевдоним /staticКроме того, потому что приложение администратора Django ссылается на ресурсы в /static/admin/...

Я не могу заставить IIS работать так же. я использую 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 возвращает HTML-страницу с ресурсами, расположенными по адресу /static/admin/base.css (например).

Когда браузер пытается загрузить такой ресурс, правило перезаписи ловит его, переписывает его в /admin/base.css, а затем обработчик ловит его и направляет его в Django, который не знает, что /admin/base.css есть и возвращает 404.

Я пытался сделать /static Виртуальный каталог, указывающий на тот же физический каталог, что и корневой каталог. Это вызвало все виды конфликтов, потому что мой корень Web.config был прочитан дважды, вызывая всевозможные нарушения повторяющихся ключей (для всех ключей, которые я определил, более или менее).

Буду признателен за любую помощь по выходу из этой ситуации.

1 ответ

В итоге я полностью избежал этой проблемы, реструктурировав папку статических ресурсов и добавив фактическую static подпапка, содержащая статические файлы Admin.

Я больше не смогу использовать manage.py collectstatic однако для развертывания интерфейса мне потребуется создать дополнительный сценарий. Ну что ж.

Другие вопросы по тегам