Redirect iis url将http重定向到非www https

Redirect iis url将http重定向到非www https,redirect,iis,web,Redirect,Iis,Web,我需要重新定向 到 -工作 到 -工作 到 -不起作用 rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{HT

我需要重新定向

到 -工作

到 -工作

到 -不起作用

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

我认为这对您来说是可行的,搜索模式有可选的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>

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


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

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

  • 为www.yourdomain.com添加DNS条目以引用服务器的公共IP
  • 然后,您需要编辑网站的绑定并“添加绑定”www.yourdomain.com
  • 使用iis将重写规则添加到网站:
  • 
    

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

    • www.example.com
    它们都将重定向到:

    由于规则不同,这些重写规则可能会重定向两次。(我是regex的新手)


    这就是我的工作原理:

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

    我假设“重写”正确地位于其开头标记中,即使在代码中缺少开头的V形符号。你能详细说明“导入规则1”吗?角色可以放在哪里?在根目录上的web.config文件中?@David Martin,{https}://www.domain.com到{https}://domain怎么样。com@RohitArora我不确定我是否完全理解你的问题,我可以建议你发布一个新问题吗?@DavidMartin简言之,这对我不起作用。我也想要同样的IIS 8。谢谢你的回复!如果希望重定向保持在同一页面上(保留路径信息),而不是转到网站根目录,请将操作更改为:
    <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>
    
        <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>