IIS7 URL переписывает исходящие правила
-
25-10-2019 - |
Вопрос
По какой -то причине я не могу понять эти правила переписывания, и я надеялся, что вы, ребята, сможете помочь. Я хочу исходящее правило, которое переписывает пути для ссылок, IMG, сценария и входных тегов.
Я хочу изменить это: http://www.mysite.com/appname/css/file.css
К этому: http://cdn.mysite.com/css/file.css
Итак, в основном мне нужно поменять имя хоста и отбросить имя приложения с URL. У меня уже есть фильтры предварительной кондиционеры в файлы *.aspx, но остальные мне кажется греческим.
Изменить для ясности
AppName в URL выше - это приложение в IIS. Это заполнитель для любого appname, который используется. Это может быть любое из более чем 50 различных приложений с нашей текущей настройкой. Там будет ВСЕГДА быть приложением. Возможно, это сделает правило еще проще.
Имя хоста, в данном случае www.mysite.com, также может немного различаться с точки зрения субдомена. Это может быть www1.mysite.com, www2 и т. Д. Кроме того, просто понял, что мне нужно поддерживать SSL, если там.
Итак, я полагаю, когда дело доходит до этого, мне просто нужно взять URL -адрес, за исключением AppName и добавить его в новый домен, уважая используемый протокол.
Original URL: http (s): // {host}/{appname}/{url}
Вывод: http (s): //cdn.mysite.com/ {url}
Решение
Я предполагаю, что ваш домен вашего сайта всегда одинаков, тогда это правило должно сделать:
<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>
РЕДАКТИРОВАТЬ: Изменено в соответствии с уточненным вопросом
Я предполагаю, что субдомен (www, www2, ...) всегда рядом, и его нужно игнорировать в целевом URL.