Вопрос

По какой -то причине я не могу понять эти правила переписывания, и я надеялся, что вы, ребята, сможете помочь. Я хочу исходящее правило, которое переписывает пути для ссылок, 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top