Web.Config Weiterleitung nicht www zu www und http zu https
Hallo zusammen,
ich habe in Azure eine Webapp und möchte gerne den ganzen http-traffic auf https umleiten.
Außerdem möchte ich die nicht www Aufrufe in www umleiten.
Für den ersten Punkt habe ich ein Rule, die soweit funktioniert. Wenn ich die zweite Rule hinzufüge, meldet der Server/Browser einen internen Fehler. Was ist hier falsch?
Rule für HTTP zu HTTPS:
Rule für nicht www zu www:
Sobald ich beide Rules in die Web.config packe, funktioniert der Aufruf der Webseite nicht mehr.
Packe ich in der ersten Rule hinter https://www.{HTTP_HOST}... funktioniert der Aufruf über domain.com aber nicht über www.domain.com weil dann das www. doppelt in der URL steht, also www.www.domain.com
Jemand eine Idee?
Vielen Dank!
ich habe in Azure eine Webapp und möchte gerne den ganzen http-traffic auf https umleiten.
Außerdem möchte ich die nicht www Aufrufe in www umleiten.
Für den ersten Punkt habe ich ein Rule, die soweit funktioniert. Wenn ich die zweite Rule hinzufüge, meldet der Server/Browser einen internen Fehler. Was ist hier falsch?
Rule für HTTP zu HTTPS:
<rewrite>
<rules>
<rule name="Weiterleitung HTTP zu HTTPS">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
Rule für nicht www zu www:
<rules>
<rule name="Redirect to www">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>
</rule>
</rules>
Sobald ich beide Rules in die Web.config packe, funktioniert der Aufruf der Webseite nicht mehr.
Packe ich in der ersten Rule hinter https://www.{HTTP_HOST}... funktioniert der Aufruf über domain.com aber nicht über www.domain.com weil dann das www. doppelt in der URL steht, also www.www.domain.com
Jemand eine Idee?
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 340068
Url: https://administrator.de/forum/web-config-weiterleitung-nicht-www-zu-www-und-http-zu-https-340068.html
Ausgedruckt am: 27.12.2024 um 09:12 Uhr
17 Kommentare
Neuester Kommentar
Warum kombinierst du beides nicht?
Wenn www und/oder https nicht zutrifft leite auf https://www. usw weiter?
Wenn www und/oder https nicht zutrifft leite auf https://www. usw weiter?
Hi
hab mir deines jetzt nicht angeschaut, aber meine UML sieht so aus
EDIT: Kurz auf deins geguckt:
du willst ja WWW vorne haben, leitest aber nicht auf www um. Deines oben könnte nur http auf https umleiten. Wenn der User aber nicht www davorschreibt, wird er nicht auf WWW landen. Nur auf HTTPS, weshalb deine Regel WIEDER greift(da kein www) und ihn ERNEUT umleitet, weiterhin ohne WW, weshalb deine Regel wieder greift ... usw
hab mir deines jetzt nicht angeschaut, aber meine UML sieht so aus
<rule name="Add WWW" enabled="true" stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.([.a-zA-Z0-9]+)$" negate="true"/>
</conditions>
<action type="Redirect" url="https://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
</rule>
<rule name="Force HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="false"/>
<conditions>
<add input="{HTTPS}" pattern="^off$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" redirectType="Permanent"/>
</rule>
EDIT: Kurz auf deins geguckt:
du willst ja WWW vorne haben, leitest aber nicht auf www um. Deines oben könnte nur http auf https umleiten. Wenn der User aber nicht www davorschreibt, wird er nicht auf WWW landen. Nur auf HTTPS, weshalb deine Regel WIEDER greift(da kein www) und ihn ERNEUT umleitet, weiterhin ohne WW, weshalb deine Regel wieder greift ... usw
hab ich auch mal probiert, bin dann aber am Fall "user kommt mit "http://www..." an. Dann schreibt das Ding, weil es HTTP sieht hin "HTTPS:\\www.{HTTP_HOST},
was https://www.www.... ergibt.
Hatte damals dann keine Lust mehr und bin irgendwann bei dem unten gelandet. Das macht im Zweifelsfall 2 Umleitungen, dafür aber zuverlässig
was https://www.www.... ergibt.
Hatte damals dann keine Lust mehr und bin irgendwann bei dem unten gelandet. Das macht im Zweifelsfall 2 Umleitungen, dafür aber zuverlässig
die Regel ist allerdings alles andere als sauber! vor allem aber das - (Minus) für den Domainnamen fehlt!
Gruß
Gruß
Zitat von @SeaStorm:
Bin für Verbesserungen immer zu haben Aber das mit dem Minus verstehe ich jetzt nicht
siehe da:Bin für Verbesserungen immer zu haben Aber das mit dem Minus verstehe ich jetzt nicht
https://regex101.com/r/Hxu5Sk/2
Das Funktioniert hier problemlos:
Gruß
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{R:1}" />
</rule>
<rule name="Redirect to WWW" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\." negate="true" />
</conditions>
<action type="Redirect" url="https://www.{HTTP_HOST}{R:1}" />
</rule>
Ist ja nur anders rum, ist ja auch egal.
Dann noch den Haken bitte nicht vergessen.
Dann noch den Haken bitte nicht vergessen.
Zitat von @SeaStorm:
die Frage als Gelöst markieren, am besten den Beitrag der es für dich gelöst hat
die Frage als Gelöst markieren, am besten den Beitrag der es für dich gelöst hat
bzw, alle, die dazu führten. VG