本文介绍了如何将所有非www URL重定向到https:// www。在IIS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在IIS 8.5中添加正确的301永久重定向规则。我添加了以下规则,但它无效。

I want to add the proper 301 permanent redirect rule in IIS 8.5. I've added the following rules but it is not working.

 <rule name="Redirect top domains with non-www to www" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern="^(http:\/\/){0,1}(www\.){0,1}([^\.]+)\.([^\.]+)$" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://www.{C:3}.{C:4}" redirectType="Permanent" />
        </rule>

条件


  • 如果URL是HTTPS并且包含www。然后没有重定向。示例:

  • 如果URL在HTTP中,然后应将其重定向到HTTPS。示例:应重定向到

  • 如果网址是HTTPS,但不包含www。然后应该使用www将其重定向到HTTPS站点。字首。示例:应重定向到

  • 如果网址既不包含HTTPS也不包含WWW,则使用www重定向到HTTPS网址。字首。示例:应重定向到

  • If the URL is in HTTPS and contains "www." then NO redirect. Example: https://www.example.com
  • If the URL is in HTTP then it should be redirected to HTTPS. Example: http://www.example.com should be redirected to https://www.example.com
  • If the URL is in HTTPS but does NOT contain "www." then it should be redirected to HTTPS site with "www." prefix. Example: https://example.com should be redirected to https://www.example.com
  • If the URL neither contains HTTPS nor WWW then redirect to HTTPS URL with "www." prefix. Example: http://example.com should be redirected to https://www.example.com

总结一下,每一个网址应为HTTPS,并且应为www。前缀

注意:我已安装。

任何人都可以帮我实现这个目标吗?

Can anyone please help me to achieve this?

推荐答案

我通过在 Web.config 文件中添加两个URL重写规则来管理它:

I managed it by adding two URL rewrite rules in Web.config file:


  1. 用于将非www重定向到。{ domain} .com /...

  2. 将HTTP重定向到HTTPS

  1. For redirecting non-www to https://www.{domain}.com/...
  2. Redirecting HTTP to HTTPS

<rule name="Redirect top domains with non-www to www" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
        <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
        <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
        <add input="{HTTP_HOST}" pattern="^([^\.]+)\.([^\.]+)$" />
      </conditions>
      <action type="Redirect" url="https://www.{HTTP_HOST}/{R:1}" redirectType="Permanent" />
      <serverVariables>
        <set name="Redirect" value="false" />
      </serverVariables>
 </rule>


<rule name="Force HTTPS" enabled="true" stopProcessing="true">
      <match url="(.*)" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
        <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
        <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
 </rule>


所有条件 negate =true用于排除。因此,包含localhost,stage和dev的所有URL都将从URL重写中排除。如果不需要,您可以删除这些条件。

All the conditions with negate="true" are used for exclusion. Hence all URLs which contains "localhost", "stage", and "dev" are excluded from URL rewrite. You can remove these conditions if not required.

Read more about negate attribute at http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

这篇关于如何将所有非www URL重定向到https:// www。在IIS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 19:54