У меня установлен модуль перезаписи URL-адресов на моем веб-сервере под управлением Windows Server 2012 R2 по URL-адресу вида: http://staging.mysite.net/
У меня есть изображения, шрифты, скрипты и т. д., загруженные в Azure CDN.
Я указал следующие правила в своем Web.config:
<rewrite>
<rules>
<rule name="CDN: fonts" stopProcessing="true">
<match url="^fonts/(.*)" />
<action type="Rewrite" url="http://cdn.staging.mysite.net/fonts/{R:1}" appendQueryString="true" />
</rule>
<rule name="CDN: images" stopProcessing="true">
<match url="^images/(.*)" />
<action type="Rewrite" url="http://cdn.staging.mysite.net/images/{R:1}" appendQueryString="true" />
</rule>
<rule name="CDN: pdf" stopProcessing="true">
<match url="^pdf/(.*)" />
<action type="Rewrite" url="http://cdn.staging.mysite.net/pdf/{R:1}" appendQueryString="true" />
</rule>
<rule name="CDN: scripts" stopProcessing="true">
<match url="^scripts/(.*)" />
<action type="Rewrite" url="http://cdn.staging.mysite.net/scripts/{R:1}" appendQueryString="true" />
</rule>
<rule name="CDN: style" stopProcessing="true">
<match url="^style/(.*)" />
<action type="Rewrite" url="http://cdn.staging.mysite.net/style/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
Все возвращается как ошибка 404, хотя файлы существуют. Например, на моей странице есть ссылка на /images/en-us/logo.png. Я убедился, что http://cdn.staging.mysite.net/images/en-us/logo.png действительно существует.
Кроме того, функция «Тестовый шаблон» оснастки «Перезапись URL» показывает, что {R1} возвращает en-us/logo.png, когда вы вводите либо images/en-us/logo.png, либо /images/en-us/logo.png в поле «Введите данные для проверки».
На мгновение я попытался использовать type="Redirect" вместо type="Rewrite", но это приводит к дублированию запроса/ответа с сервера. Первый — 301, второй — 200. Мне нужен только ответ 200.
++ Очевидно, что mysite.net не является моим доменом и используется только в качестве примера.