2016-08-31 20 views
6

Używam chmury Azure z aplikacją internetową i moją stroną serwera napisaną na nodejs. Gdy aplikacja internetowa otrzymuje żądanie http, chcę przekierować żądanie do https znalazłem rozwiązanie. kładę, że do mojego pliku web.config wewnątrz rules taguAplikacja internetowa Azure przekierowania http do https

 <rule name="Force HTTPS" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="off" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="false" redirectType="Permanent" /> 
     </rule> 

Problem jest po wpisaniu w przeglądarce „https://myURL.com” przekierowanie do ekranu głównego każda rzecz w porządku, ale kiedy zmienić https do http „http://myURL.com” przekierowanie do https://myURL.com/ „i dodać do adresu URL«bin/www»według że adres URL wygląda tak” http://myURL.com/bin/www”, odpowiedź brzmi:. strona nie znajdzie

pytanie jest jak przekierować wyczyścić URL bez dodania danych do adresu URL?

Część mojego pliku web.config:

<rewrite> 
     <rules> 
     <!-- Do not interfere with requests for node-inspector debugging --> 
     <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url="^bin/www\/debug[\/]?" /> 
     </rule> 
     <!-- First we consider whether the incoming URL matches a physical file in the /public folder --> 
     <rule name="StaticContent"> 
      <action type="Rewrite" url="public{REQUEST_URI}" /> 
     </rule> 
     <!-- All other URLs are mapped to the node.js site entry point --> 
     <rule name="DynamicContent"> 
      <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" /> 
      </conditions> 
      <action type="Rewrite" url="bin/www" /> 
     </rule> 
     <!-- Redirect all traffic to SSL --> 
     <rule name="Force HTTPS" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="off" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="false" redirectType="Permanent" /> 
     </rule> 
     </rules> 
    </rewrite> 
    <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it --> 
    <security> 
     <requestFiltering> 
     <hiddenSegments> 
      <remove segment="bin" /> 
     </hiddenSegments> 
     </requestFiltering> 
    </security> 

Dzięki za odpowiedzi, Michael.

+1

znalazłem rozwiązanie tylko kasowanie plików cookie z przeglądarki po że błąd został zniknął –

Odpowiedz

3

R: 1 to back-reference na wzór reguły. Po dołączeniu do adresu URL, który tutaj:

url="https://{HTTP_HOST}/{R:1}" 

zmieniając że w

url="https://{HTTP_HOST}" 

powinno spowodować przekierowanie do korzenia https.

+0

Dzięki, ten sam rezultat. –

5

Istnieje również bezpłatne rozszerzenie o to.

  1. Przejdź do paska bocznego ustawień aplikacji sieci Web, wyszukaj kartę "Rozszerzenia" i kliknij "Dodaj".

Extension Tab

  1. Przewiń w dół i znaleźć przedłużenie Przekierowanie HTTP HTTPS przez gregjhogan.

Add Extension

  1. Zebrane warunki.

Accept Terms

  1. Restart Web App dla działania podjąć natychmiast.

  2. Gotowe!

Więcej informacji na temat wdrożenia tego rozszerzenia: check the source code on GitHub. Najważniejszym plikiem źródłowym jest applicationhost.xdt.

Cytat from GitHub (02-08-2017) (kredyty przejść do gregjhogan):

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> 
+0

To jest świetne .. Reguła przepisywania Web.Config NIE działa dla mnie, to zrobiła! –

Powiązane problemy