web.config redirect non-www to www

后端 未结 7 1949
北海茫月
北海茫月 2020-11-28 05:01

I need to redirect non-www urls to www url for both http and https urls. I tried following rules in web.config.



        
相关标签:
7条回答
  • 2020-11-28 05:04

    I know this is an old post but it's not fully answered. I ended up extending Satpals answer

    First rule catches http + www and second one catches non-www

    For some reason i could not use MapProtocol in the fist Rule but it works with https written directly into the url.

    <rewrite>
      <rules>
        <rule name="Special case www &amp; HTTPS off" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^www\.example\.com$" />
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="SeeOther" />
        </rule>
        <rule name="Redirect to www &amp; HTTPS" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <conditions trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^example\.com$" />
          </conditions>
          <action type="Redirect" url="{MapProtocol:{HTTPS}}://www.example.com/{R:1}" redirectType="SeeOther" />
        </rule>
      </rules>
      <rewriteMaps>
        <rewriteMap name="MapProtocol">
          <add key="on" value="https" />
          <add key="off" value="http" />
        </rewriteMap>
      </rewriteMaps>
    </rewrite>
    
    0 讨论(0)
  • 2020-11-28 05:08

    Follow the Step Below

    1) Login to Cpanel of Your Website

    2)Click on Hosting Setting

    click here to See how to do

    3)Select Preferred domain as www.yourdomainame.com eg :www.emodafinil.com

    click here to See how to do

    0 讨论(0)
  • 2020-11-28 05:11

    Since 2018, consider to use everytime https (SSL) !

    So I use redirect to www and to https together.

    <rule name="Redirect to www" stopProcessing="true">
        <match url="(.*)" />
        <conditions trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^domain.com$" />
        </conditions>
        <action type="Redirect" url="https://www.comain.com/{R:1}" redirectType="Permanent" />
    </rule>
    
    <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAny">
            <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
    </rule>
    

    more info here : https://forums.realmacsoftware.com/t/effective-july-2018-google-s-chrome-browser-will-mark-non-https-sites-as-not-secure/18597

    0 讨论(0)
  • 2020-11-28 05:12

    This worked fine for me:-

    <rewrite>
      <rules>
       <rule name="Redirect to WWW" stopProcessing="true">
    	<match url=".*" />
    	<conditions>
    	<add input="{HTTP_HOST}" pattern="^myExample.in$" />
    	</conditions>
    	<action type="Redirect" url="https://www.myExample.in/{R:0}" redirectType="Permanent" />
    </rule>
     </rules>
    </rewrite>

    0 讨论(0)
  • 2020-11-28 05:19

    For a safer rule that works for both Match Any and Match All situations, you can use the Rewrite Map solution. It’s a perfectly good solution with the only drawback being the ever so slight extra effort to set it up since you need to create a rewrite map before you create the rule. In other words, if you choose to use this as your sole method of handling the protocol, you’ll be safe.

    You can create a Rewrite Map called MapProtocol, you can use {MapProtocol:{HTTPS}} for the protocol within any rule action.

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

    Reference

    0 讨论(0)
  • 2020-11-28 05:27

    Other answers here are unnecessary long, here's the rule i use (just copy and paste) :

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

    This will redirect to the www version while preserving the HTTP and HTTPS protocol

    Hope this helps.

    0 讨论(0)
提交回复
热议问题