Web.config文件.将所有流量重定向到www.my ...使用rules元素.

Pau*_*aul 13 asp.net redirect web-config

我有一个web.config文件,可以自动将流量发送到HTTPS.但是,如果有人进入MyDomain.com,那么它将转到https://mydomain.com,如果有人进入www.mydomain.com,那么它将转到https://www.mydomain.com.

我希望所有流量都转到https://www.mydomain.com.这可以使用web.config的rules元素吗?我的文件目前看起来像这样:

<rewrite>
  <rules>
      <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
      </rule>
  </rules>
Run Code Online (Sandbox Code Playgroud)

Mar*_*ker 23

规则

<rule name="Redirect to www subdomain">

  <match url=".*" />

  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
    <add input="{SERVER_PROTOCOL}" pattern="^(.*)(/.*)?$"/>
  </conditions>

  <action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>

</rule>
Run Code Online (Sandbox Code Playgroud)

规则解释

  • <match />将规则限制为仅路径和查询字符串与给定模式匹配的请求.在我们的例子中,我们希望匹配所有路径和查询字符串,因为我们将基于域重定向.

  • <conditions />将规则进一步限制为仅满足给定条件的匹配请求.第一个条件排除其域已经以"www"开头的请求.第二个条件是只有{C:1}反向引用,它不应该过滤掉任何东西.

  • <action>预先设置"www." 到域然后重定向.

变量

  • {R:0}是对<match \>标记完全匹配的反向引用.后引用应该只包含路径和查询字符串,因为这是所有<match \>匹配的.

  • {C:1}是从最终条件开始的第一个匹配组的反向引用.这应该包含{SERVER_PROTOCOL}变量中"/"的所有内容.

  • {HTTP_HOST}是包含请求的域的服务器变量.(有关完整列表,请参见此处.)

  • {SERVER_PROTOCOL}另一个服务器变量 其格式应为"{protocol}/{version number}".

其他选择

  • <action redirectType>可以是临时的,发现的或看到的.(有关详细信息,请参阅此处.)

  • <conditions logicalGrouping> 可以是MatchAll或MatchAny.

结论

有关更完整的说明,请参阅此处.

  • 你不想要`redirectType ="Permanent"`用于301重定向吗? (3认同)