2016-08-22 4 views
2

У меня есть угловое приложение, которое я размещаю на веб-сайте Microsoft Azure. Я установил его с автоматической переадресацией всех запросов на HTTPS, установив расширение для меня: https://github.com/gregjhogan/redirect-http-to-https-site-extensionAzure Web App Правила перезаписи HTTP/HTTPS

Что приложение расширения делает то, что он добавляет файл applicationhost.xdt который выглядит следующим образом:

<?xml version="1.0" ?> 
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
 
    <location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)"> 
 
    <system.webServer xdt:Transform="InsertIfMissing"> 
 
     <rewrite xdt:Transform="InsertIfMissing"> 
 
     <rules xdt:Transform="InsertIfMissing" lockElements="clear"> 
 
      <rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true"> 
 
      <match url="(.*)" /> 
 
      <conditions> 
 
       <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
 
       <add input="{WARMUP_REQUEST}" pattern="1" negate="true" /> 
 
      </conditions> 
 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
 
      </rule> 
 
     </rules> 
 
     </rewrite> 
 
    </system.webServer> 
 
    </location> 
 
</configuration>

Теперь, работает отлично, и все будет перенаправлен на HTTPS. Теперь я столкнулся с новым требованием, и я хочу изменить правило перезаписи следующим образом: Перенаправить все запросы на HTTPS (как это сейчас), за исключением любого URL-адреса, который содержит следующее: «/ #/user/[Some случайный идентификатор пользователя] ".

Я читал разные сообщения и пробовал разные вещи, но настройка IIS и прочее вроде этого не совсем мой домен, и я изо всех сил пытаюсь это выяснить. Попробовать я чувствую, как близко, когда я добавил этот {REQUEST_URI} условие:

<conditions> 
 
    <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
 
    <add input="{REQUEST_URI}" negate="true" pattern=".*/#/user/.+" ignoreCase="true" /> 
 
    <add input="{WARMUP_REQUEST}" pattern="1" negate="true" /> 
 
</conditions>

Я попытался перезагрузки Azure Web App, а также передислокации, но это Безразлично» t кажется, что все в порядке, все по-прежнему перенаправляется на HTTPS в соответствии с исходным правилом.

ответ

0

Я тестирования регулярных выражений в Интернете, и это, кажется, что вам нужно, чтобы избежать слэш:

\/#\/user\/.+ 

Испытано строку:

http://localhost/#/user/123 

Испытано регулярное выражение:

\/#\/user\/.+ 

сайт: http://www.regextester.com/

+0

Спасибо за ответ, но, к сожалению, он не работал .. Im возникают проблемы отладки его. Любая идея отладки? –

+0

отладка регулярного выражения? С помощью этого regextester.com не помогает? –

+0

Да, это было полезно. Я имел в виду, что, когда я могу сказать, что регулярное выражение является правильным, но я все еще не получаю перенаправление, как я хочу. Как отлаживать фактическое перенаправление на сервере? Возможно ли это? –

0

Попробуйте добавить это к вашему событию Application_BeginRequest

if (!HttpContext.Current.Request.IsSecureConnection && !HttpContext.Current.Request.Url.Host.Contains("/#/user/[Some random user id]")) 
     { 
      Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] 
             + HttpContext.Current.Request.RawUrl); 
     } 
Смежные вопросы