iisurl将http重定向到非www https

q5lcpyga  于 2023-01-17  发布在  其他
关注(0)|答案(8)|浏览(125)

我需要从重定向
www.domain.dehttps://domain.de-工作正常
http://www.domain.dehttps://domain.de-工作正常
http://domain.dehttps://domain.de-不工作

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

x759pob21#

我认为这将为您工作,搜索模式有可选的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>
brvekthn

brvekthn2#

接受的答案不处理特殊情况https://www.domain.de
这些规则完成了全部工作:

<rewrite>
      <rules>
        <rule name="Redirect to HTTPS without www" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTPS}" pattern="^OFF$" />
            <add input="{HTTP_HOST}" pattern="^(www\.)?(.*)$" />
          </conditions>
          <action type="Redirect" url="https://{C:2}/{R:1}" redirectType="Permanent" />
        </rule>
        <rule name="Special case for HTTPS with www" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTPS}" pattern="^ON$" />
            <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
          </conditions>
          <action type="Redirect" url="https://{C:2}/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
ctehm74n

ctehm74n3#

如果要将www重定向到非www:
1.为www.example.com添加DNS条目以引用服务器的公共IP www.yourdomain.com to refer to your server's public IP
1.然后您需要编辑您的网站绑定和"添加绑定" www.example.com www.yourdomain.com
1.使用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

ua4mk5z4

ua4mk5z44#

如果您想要比这三个示例更灵活的模式,请将HTTP_HOST模式更改为:\w+\.\w+$。这将适用于所有三个示例以及其他任何示例,如 subdomain.abcdef.domain.de
如果你使用这个正则表达式,要么把它放在圆括号里,要么在你的操作中把C:1改为C:0。

vatpfxk5

vatpfxk55#

这就是我的工作:

<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

1bqhqjot

1bqhqjot6#

https://www.example.com重定向到https://example.com我必须执行2个步骤
1.选择网站,单击“URL重写”-〉单击“添加规则”-〉选择“Cononcial域名”-〉选择您的域(不带www)-〉确保规则位于顶部-〉突出显示规则并单击“编辑”-〉并更新规则末尾的“重定向URL”,以包括"s“-https://example.com/{R:1}
1.我还必须创建一个新的网站与域www.example.com,新的应用程序池,并选择SSL证书,并将其指向一个包含以下内容的文件夹(由于某种原因StackOverflow不会显示代码,我粘贴下面的重写规则,但只是谷歌IIS重写规则)
完成这两个步骤后,才能按预期工作

bbuxkriu

bbuxkriu7#

尝试了许多解决方案,但以下作品对我来说:
1.右键单击“域”和“添加站点”绑定,再添加一个带有www:

2.重新启动服务。应该可以。

k10s72fa

k10s72fa8#

这些重写规则与以下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>

相关问题