web.config将非www重定向到www

时间:2013-07-18 04:49:03

标签: iis url-rewriting web-config

我需要将非www网址重定向到www网址,用于http和https网址。我尝试在web.config中遵循规则。

<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
    <add input="{HTTP_HOST}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:0}" redirectType="Permanent" />

<rule name="Redirect to WWW https" stopProcessing="true">
<match url=".*" />
<conditions>
    <add input="{HTTPS}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="https://www.domain.com/{R:0}" redirectType="Permanent" />

它适用于非ssl网址,但在ssl的情况下,它会从https://domain.com重定向到http://www.domain.com

请帮我纠正我的规则。

7 个答案:

答案 0 :(得分:49)

对于适用于Match AnyMatch All情况的更安全的规则,您可以使用重写映射解决方案。这是一个非常好的解决方案,唯一的缺点是设置它需要额外的努力,因为您需要在创建规则之前创建重写映射。换句话说,如果您选择将此作为处理协议的唯一方法,那么您将是安全的。

您可以创建名为 MapProtocol 的重写映射,您可以在任何规则操作中使用{MapProtocol:{HTTPS}}作为协议。

<rewrite>
  <rules>
    <rule name="Redirect to www" stopProcessing="true">
      <match url="(.*)" />
      <conditions trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^domain.com$" />
      </conditions>
      <action type="Redirect" 
        url="{MapProtocol:{HTTPS}}://www.domain.com/{R:1}" />
    </rule>
  </rules>
  <rewriteMaps>
    <rewriteMap name="MapProtocol">
      <add key="on" value="https" />
      <add key="off" value="http" />
    </rewriteMap>
  </rewriteMaps>
</rewrite>

Reference

答案 1 :(得分:7)

自2018年以来,请考虑每次使用https(SSL)!

所以我使用重定向到www和https。

<rule name="Redirect to www" stopProcessing="true">
    <match url="(.*)" />
    <conditions trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^domain.com$" />
    </conditions>
    <action type="Redirect" url="https://www.comain.com/{R:1}" redirectType="Permanent" />
</rule>

<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>

更多信息: https://forums.realmacsoftware.com/t/effective-july-2018-google-s-chrome-browser-will-mark-non-https-sites-as-not-secure/18597

答案 2 :(得分:5)

这里的其他答案是不必要的,这是我使用的规则(只是复制和粘贴):

<rule name="ensurewww" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
  </conditions>
  <action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
</rule>

这将在保留HTTP和HTTPS协议的同时重定向到www版本

希望这有帮助。

答案 3 :(得分:2)

我知道这是一篇很老的帖子,但还没有完全回答。我最终延长了Satpals answer

第一条规则捕获http + www,第二条规则捕获非www

出于某种原因,我无法在第一条规则中使用MapProtocol,但它可以直接写入网址中使用https。

solve [firstorder]

答案 4 :(得分:0)

这对我来说很好:-

<rewrite>
  <rules>
   <rule name="Redirect to WWW" stopProcessing="true">
	<match url=".*" />
	<conditions>
	<add input="{HTTP_HOST}" pattern="^myExample.in$" />
	</conditions>
	<action type="Redirect" url="https://www.myExample.in/{R:0}" redirectType="Permanent" />
</rule>
 </rules>
</rewrite>

答案 5 :(得分:0)

这篇文章基本上是针对那些需要在Windows托管中将非www重定向到www URL的人的。

在web.config文件中,如下代码:

<system.webServer>
<rewrite>
<rules>
<rule name=”Redirect example.com to www.example.com HTTP” patternSyntax=”ECMAScript” stopProcessing=”true”>
<match url=”.*” />
<conditions>
<add input=”{HTTP_HOST}” pattern=”^example.com$” />
<add input=”{HTTPS}” pattern=”off” />
</conditions>
<action type=”Redirect” url=”http://www.example.com/{R:0}” redirectType=”Permanent” appendQueryString=”true”/>
</rule>
<rule name=”Redirect domain.com to www.example.com HTTPS” patternSyntax=”ECMAScript” stopProcessing=”true”>
<match url=”.*” />
<conditions>
<add input=”{HTTP_HOST}” pattern=”^domain.com$” />
<add input=”{HTTPS}” pattern=”on” />
</conditions>
<action type=”Redirect” url=”https://www.example.com/{R:0}” redirectType=”Permanent” appendQueryString=”true”/>
</rule>
</rules>
</rewrite>
</system.webServer>

在上面的代码中,请注意有两个规则,一个用于http,另一个用于https。为了避免同一规则中的http和https冲突,这里使用了两个单独的模式。

我希望它对你们有用... !!

答案 6 :(得分:-1)

按照下面的步骤

1)登录到您的网站的面板

2)点击主机设置

click here to See how to do

3)选择“首选域名”作为www.yourdomainame.com,例如:www.emodafinil.com

click here to See how to do