Web.config将所有内容重定向到https和非www

时间:2017-05-13 02:25:38

标签: web-config

我需要做的是将所有请求重定向到https和非www url。例如: -http:// example .com / something #hash - > https:// example .com / something #hash - https://www。例如.com / something #hash - > https:// example .com / something #hash - http://www。例如.com / something #hash - > https:// example .com / something #hash

我做了什么,但没有工作......:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <!--<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />-->
      <action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
    </rule>

    <rule name="Redirect to non-www" stopProcessing="true">
      <match url="(.*)"></match>
      <conditions>
        <add input="{HTTP_HOST}" pattern="^example.com$" negate="true"></add>
      </conditions>
      <action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
  <outboundRules>
    <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
      <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
      <conditions>
        <add input="{HTTPS}" pattern="on" ignoreCase="true" />
      </conditions>
      <action type="Rewrite" value="max-age=31536000" />
    </rule>
  </outboundRules>
</rewrite>

感谢!!!

1 个答案:

答案 0 :(得分:0)

试试这个:

<rule name="HTTP to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://www.{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
                </rule>