2016-01-25 3 views
0

Итак, я искал поисковые запросы и смотрел похожие темы на SO, но не нашел решение и решил, что могу просто спросить.Web.config перенаправляет с http на https для некоторого подсайта

У меня есть сайт с несколькими дочерними сайтами/страницами. В моем файле Web.config для мастер-сайта (затрагивающий все дочерние сайты/страницы) У меня есть следующее правило:

<rule name="Redirect to https"> 
    <match url="(.*)"/> 
    <conditions> 
    <add input="{HTTPS}" pattern="Off"/> 
    <add input="{REQUEST_METHOD}" pattern="^get$|^head$"/> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
</rule> 

Это правило перенаправляет все запросы на любую страницу/сайт под основной сайт https:// которые были намерены в течение некоторого времени.

Теперь, однако, у меня есть 4 дочерних сайта (4 страницы под основным сайтом с их собственными URL-адресами), которые я не хочу использовать https: // для. Позвоните им на www.apa.com, www.bepa.com, www.cepa.com, www.depa.com. Я прокомментировал комментарий this similar topic, в котором говорится, что можно сделать исключения в таких правилах, но я не получил его для работы.

Поэтому я предполагаю, что я ищу либо отдельное правило, либо какое-то исключение для этого текущего правила, которое хранит http для моих четырех новых дочерних сайтов и перенаправляет все остальные сайты/страницы на https (как и в настоящее время).

EDIT: Так что я принял другой подход. Теперь я вместо этого пытаюсь сказать, какие сайты должны перенаправлять на https. Следующее регулярное выражение, кажется, работает идеально в регулярном выражении тестера, но при использовании в файле web.config, ничего не происходит:

^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$ 

Если регулярное выражение соответствует, Id хотел перенаправить все запросы HTTPS, и если это не соответствует, он должен оставаться http. В файле web.config это выглядит так:

<rewrite> 
    <rules> 
    <rule name="Redirect to https"> 
     <match url="/^(https?:\/\/)?(something\.somethingelse\.com\/?)(.*)$/"/> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off"/> 
     <add input="{REQUEST_METHOD}" pattern="^get$|^head$"/> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
    </rule> 
    </rules> 
</rewrite> 

Однако, похоже, это ничего не делает. Его похоже на то, что невозможно сопоставить полный URL-адрес или что-то в этом роде.

ответ

0

мне удалось придумать решение:

<rule name="Redirect to https"> 
    <match url="(.*)"/> 
    <conditions> 
    <add input="{HTTPS}" pattern="Off"/> 
    <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
    <add input="{HTTP_HOST}" pattern="(.*SomeWordFromMyUrl*)"/> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
</rule> 
Смежные вопросы