Это можно сделать с помощью правила перезаписи исходящих сообщений в сочетании с ARR. Следующее правило должно сделать это:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Rewrite image URLs in CSS response" preCondition="IsCSS">
<match pattern="localhost/img/" />
<action type="Rewrite" value="localhost/pandora/img/" />
</rule>
<preConditions>
<preCondition name="IsCSS">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="text/css" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
Вы, конечно, должны заменить localhost на правильные доменные имена. Если вы переписываете с другого доменного имени, то тег соответствия должен содержать доменное имя, которое вы хотите заменить, а тег действия должен содержать доменное имя, которое вы хотите заменить.
Поскольку CSS не является HTML, вы не можете использовать функцию фильтрации тегов модуля перезаписи URL. Таким образом, он может выполнять сопоставление регулярных выражений только со всем содержимым файла CSS, что потенциально может сильно загружать процессор для больших файлов CSS. Если вы знаете, сколько URL необходимо заменить, вы можете добавить атрибут occurrences="x"
к тегу <match>
, чтобы ограничить количество совпадений, которое должен искать модуль перезаписи URL. Также попробуйте переместить правила CSS в начало файла CSS. E.g.:
<action type="Rewrite" value="localhost/pandora/img/" occurrences="3" />
Вы также можете включить кэширование в пользовательском режиме в IIS и добавить атрибут rewriteBeforeCache="yes"
в тег <outboundRules>
, чтобы IIS кэшировал переписанное содержимое. E.g.:
<outboundRules rewriteBeforeCache="yes">
Более полезную информацию и советы о правилах перезаписи исходящих сообщений можно найти в этом сообщении в блоге .