IIS 8.5 URL Rewrite force redirect http --> https for non www
Solution 1
O. k., i found the solution - the link translation is caused by a tmg 2010 in front of the iis. The tmg has a bug where the link translation resets the https links to http in case of a 301. Problem an solution are described here:
http://blog.sanibellogic.com/2008/09/default
http://support.microsoft.com/kb/924373
Thanks everybody.
Solution 2
The following works for us:
<rule name="HTTP Redirect to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
MartinZ
Updated on September 17, 2020Comments
-
MartinZ over 3 years
I am starting with the rewrite module have a problem with a "simple" IIS 8.5 URL Rewrite redirect http --> https for a non www site.
Problem: If the domain matches the action url parameter i always get "http://" and not "https://".
This is my rule:
<rewrite> <rules> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
I can't post several links so "domain" = crm.test.com. The site with the rewrite rule is bound to "domain"=crm.test.com on port 2080.
I want to redirect "http://" to "https://", but i always get "http://" as location in response:
HTTP/1.1·302·Redirect Connection:·close Content-Length:·176 Date:·Thu,·15·Jan·2015·08:21:21·GMT Location:·http://domain/ <-- Content-Type:·text/html;·charset=UTF-8 Server:·Microsoft-IIS/8.5 X-Powered-By:·ASP.NET
I tried the following action url parameter:
Not working:
"https://{HTTP_HOST}/{R:1}" -> http://domain/ "https://domain/{R:1}" -> http://domain/ "https://{HTTP_HOST}:443/{R:1}" -> http://domain/ "https://{HTTP_HOST}/1" -> http://domain/1/
Working:
"https1://{HTTP_HOST}/{R:1}" -> https1://domain/ "https://{HTTP_HOST}:444/{R:1}" -> https://domain:444/ "https://test.domain.com/{R:1}" -> https://test.domain.com/ "https://www.google.com/{R:1}" -> https://www.google.com/
I found "URL Rewrite on IIS from http to https is not working,", but this doesn't solve my problem.
Did i missed something?
-
MartinZ over 9 yearsSorry, same result with this configuration. Thanks Martin
-
SimonJ over 9 yearsAre you adding this to global rules or per web site rules? If "https://{HTTP_HOST}:443/{R:1}" -> domain does not work, but "https://{HTTP_HOST}:444/{R:1}" -> domain:444 does, then maybe you have another rule higher up the chain that is preventing this rule being hit?
-
MartinZ over 9 yearsThis is a local rule and it's the only rule i got. I set up an aspx webpage to try to redirect from here and found that all links on the page are automatically changed from http to https if the links contain the requestet host. This seems the problem, maybe it is not the rewrite module. Thanks Martin