how to create rule for iis redirection to www1 -> www - redirect

how to create rule for IIS redirection www1 domain to www.
example www1.xyz.com -> www.xyz.com

If you want to redirect from www1 to www, you can refer to this link:
<rule name="redirect to www" enabled="false" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="www1.example.com" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" />
</rule>

Related

redirect https url without www to https url with www in web.config

Can any one tell me about how to redirect https url without www to https url with www in web.config file.
Here is some code that I have tried but I didn't meet my requirement.
<rule name="Redirect domain.com to www" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="<www.url>/{R:0}" />
</rule>
<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="true" redirectType="Permanent"/>
</rule>

redirect non-www to www for an internal page's url

I want to redirect:
domain.co.uk to www.domain.co.uk and
domain.co.uk/contact-us to www.domain.co.uk/contact-us.
I have tried dozen of web.config rules with ECMAScript and Wildcard but first one is done but second one either remain same or redirect to www.domain.co.uk i.e. home page. A example of what is there at the moment is as below:
<rule name="Redirect domain.com to www" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain.co.uk/*" />
</conditions>
<action type="Redirect" url="http://www.domain.co.uk/{C:1}/{R:0}" />
</rule>
This will redirect to the www version while preserving the HTTP and HTTPS protocol:
<rule name="ensurewww" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
</conditions>
<action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
</rule>

Need to redirect non-www and/or http to www AND https

Plain asp website. Need to redirect non-www to www AND http to https.
Found another post that was close but doesn't completely work. It works for root entries only but if there is anything beyond the root site name then the redirect does not work at all.
For example --
non-www will redirect properly to https and www
non-http will also redirect properly to https and www
But domain.com/categories.asp?cat=130 will not redirect and will simply stay on the non-https, non-www page.
Any fix for this redirect?
Here is the code that I used:
<rewrite>
<rules>
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="{MapProtocol:{HTTPS}}://www.domain.com/{R:1}" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapProtocol">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>
OK -- I added this after my http to https and this works:
--
<rule name="Canonical name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
</conditions>
<action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
</rule>

redirect https:// to https://www in IIS 8

Suppose I have a site http://www.example.com which was 301 redirect from http://example.com to http://www.example.com.
Now after Google's recent update about using SSL for better rankings, I decided to use SSL.
I am using below code in web.config to 301 redirect to https
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:1}" />
</rule>
</rules>
</rewrite>
now its redirecting 301 all requests http://www.example.com and http://example.com to https://www.example.com
but it's not redirecting https://example.com to https://www.example.com
I want to do this for only one canonical version as many SEO authority sites suggested.
If I use Plesk builtin functionality to redirect all non www to www, then it does double redirect.
How can I do this, Please help
Try a second rule to enforce the www, such as:
<rule name="Enforce WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{CACHE_URL}" pattern="^https://(?!www)(.*)" />
</conditions>
<action type="Redirect" url="https://www.{C:1}" redirectType="Permanent" />
</rule>
The condition you have on your rule will stop it firing for a https request such as https://example.com.
Version #2 Try putting this before your other rule, the stopProcessing should stop it going circular.
<rule name="Enforce WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="example.com" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:0}" />
</rule>

IIS 8.5 URL Rewrite force redirect http --> https for non www

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?
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>
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.
You can also config the redirect domain with or without www using URL rewrite. The SSL cert only include: www FQDN.
web.config example (domain example is: sysadmit.com):
<rewrite>
<rules>
<clear />
<rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^[^www]" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://www.sysadmit.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
Extracted from: http://www.sysadmit.com/2017/05/windows-iis-redirigir-http-https.html