Исходящие правила перезаписи URL-адресов IIS7


По какой-то причине я никак не могу привыкнуть к этим правилам переписывания, и я надеялся, что вы, ребята, сможете мне помочь. Мне нужно исходящее правило, которое перепишет пути для ссылок, img, сценариев и входных тегов.

Я хочу изменить следующим образом: http://www.mysite.com/appname/css/file.css

К этому: http://cdn.mysite.com/css/file.css

Итак, в основном мне нужно поменять имя хоста и удалить имя приложения из URL. У меня есть фильтры предварительного состояния, чтобы *.aspx-файлов, которые уже установлены, но остальное выглядит как греческий для меня.

редактировать для ясности

Имя приложения в URL-адресе выше-это приложение в IIS. Это заполнитель для любого имени приложения, которое используется. Это может быть любое из более чем 50 различных приложений с нашей текущей настройкой. Всегда будет имя приложения. Возможно, это сделает правило еще проще.

Имя хоста, в данном случае www.mysite.com, может также незначительно отличаться с точки зрения подобласть. Это может быть www1.mysite.com, сайт www2 и т. д. Кроме того, просто понял, что мне нужно поддерживать SSL, если есть.

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

Исходный URL: http (s):/ / {host} / {appname}/{URL}

Вывод: http(s)://cdn.mysite.com/{URL}

1 3

1 ответ:

Я предполагаю, что домен вашего сайта всегда один и тот же, тогда это правило должно делать:

<rule name="CdnRule" preCondition="OnlyAspx" >
    <match filterByTags="Img, Input, Link, Script" pattern="^(.+)://.+?\.(.+?)/.+?/(.*)" />
    <action type="Rewrite" value="{R:1}://cdn.{R:2}/{R:3}" />
</rule>

<preConditions>
<preCondition name="OnlyAspx">
    <add input="{PATH_INFO}" pattern=".+\.aspx$" />
</preCondition>
</preConditions>

EDIT: изменено в соответствии с уточненным вопросом

Я предполагаю, что поддомен (www, www2, ...)всегда есть,и он должен быть проигнорирован в целевом url.