15

i need to redirect from

www.domain.de to https://domain.de -works

http://www.domain.de to https://domain.de -works

http://domain.de to https://domain.de -does not work

rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
      </conditions>
      <action type="Redirect" url="https://{C:1}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>
4

6 回答 6

32

我认为这对您有用,搜索模式具有可选的 www 并使用反向引用 C:2 进行重定向,该规则具有仅针对非 https 运行的条件。

这是模式:

"^(www\.)?(.*)$"

在哪里:

{C:0} - www.domain.de
{C:1} - www.
{C:2} - domain.de

这是完整的规则:

  <rewrite>
    <rules>
      <rule name="SecureRedirect" stopProcessing="true">
        <match url="^(.*)$" />
        <conditions>
          <add input="{HTTPS}" pattern="off" />
          <add input="{HTTP_HOST}" pattern="^(www\.)?(.*)$" />
        </conditions>
        <action type="Redirect" url="https://{C:2}" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
于 2013-06-17T12:49:01.603 回答
4

如果要将 www 重定向到非 www:

  1. 为 www.yourdomain.com 添加 DNS 条目以引用您服务器的公共 IP
  2. 然后您需要编辑您网站的绑定并“添加绑定”www.yourdomain.com
  3. 使用 iis 向您的网站添加重写规则:
<rule name="Remove WWW" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions>
    <add input="{CACHE_URL}" pattern="*://www.*" />
  </conditions>
  <action type="Redirect" url="{C:1}://{C:2}" redirectType="Permanent" />
</rule>

参考: http: //madskristensen.net/post/url-rewrite-and-the-www-subdomain

于 2016-11-14T04:51:19.493 回答
2

如果您想要比您的三个示例更灵活的东西,请将您的 HTTP_HOST 模式更改为 : \w+\.\w+$。这适用于所有三个示例以及其他任何示例,例如subdomain.abcdef.domain.de

如果您使用此正则表达式,请将其括在括号中或在您的操作中将 C:1 更改为 C:0。

于 2013-06-23T19:26:40.317 回答
2

这对我有用:

    <rule name="NameRule1" stopProcessing="true" enabled="true" >
        <match url="(.*)" />
        <conditions>
          <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
        </conditions>
        <action type="Redirect" url="http://example.com/{R:1}" />
    </rule>

我是从:https ://medium.com/iis-and-windows-server/redirect-url-from-www-to-non-www-in-iis7-5-4d2909b9704

于 2018-06-27T21:49:46.213 回答
0

将https://www.example.com重定向到https://example.com我必须执行 2 个步骤

  1. 选择网站,点击“URL Rewrite” -> 点击“Add Rule” -> 选择“Cononcial domain name” -> 选择您的域名(不带 www) -> 确保规则位于顶部 -> 突出显示规则并点击“编辑”-> 并在规则末尾更新“重定向 URL”以包含“s” - https://example.com/{R:1}

  2. 我还必须创建一个域为www.example.com的新网站,新的应用程序池并选择 SSL 证书并将其指向包含以下内容的文件夹(由于某种原因,StackOverflow 不会显示我为重写规则粘贴的代码但只是谷歌 IIS 重写规则)

完成这两个步骤后,它才能按需要工作

于 2021-06-20T15:36:14.743 回答
-1

这些重写规则与以下 URL 匹配:

他们都会重定向到:https ://example.com

由于单独的规则,这些重写规则可能会重定向两次。(我是正则表达式的新手)

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
                </rule>
                <rule name="WWW" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
                    </conditions>
                    <action type="Redirect" url="https://example.com{PATH_INFO}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
于 2017-04-17T19:03:57.653 回答