Исходящие правила перезаписи 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 ответ:
Я предполагаю, что домен вашего сайта всегда один и тот же, тогда это правило должно делать:
<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.