iis web.config将非www重定向到www

mkh04yzy  于 2022-11-12  发布在  其他
关注(0)|答案(7)|浏览(193)

对于HTTP和HTTPS URL,我需要将非www URL重定向到www URL。我在web.config中尝试了以下规则。

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

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

对于非SSL URL,它可以完美工作,但对于SSL,它会从https://example.com重定向到http://www.example.com

mxg2im7a

mxg2im7a1#

对于Match AnyMatch All两种情况下都适用的安全规则,您可以使用重写Map解决方案。这是一个非常好的解决方案,唯一的缺点是设置它非常简单,因为您需要在创建规则之前创建一个重写Map。换句话说,如果您选择使用此方法作为处理协议的唯一方法,您将是安全的。
您可以创建名为MapProtocol的重写Map,也可以在任何规则操作中使用{MapProtocol:{HTTPS}}作为协议。

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

Reference

wdebmtf2

wdebmtf22#

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

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

这将重定向到www版本,同时保留HTTP和HTTPS协议
希望这对你有帮助。

2cmtqfgy

2cmtqfgy3#

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

因此,我同时使用重定向到www和https。

<rule name="Redirect to www" stopProcessing="true">
    <match url="(.*)" />
    <conditions trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^example.com$" />
    </conditions>
    <action type="Redirect" url="https://www.example.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

6kkfgxo0

6kkfgxo04#

我知道这是一个旧的职位,但它没有完全回答.我结束了扩展Satpals answer
第一个规则捕获http + www,第二个规则捕获非www
由于某种原因,我不能在第一个规则中使用MapProtocol,但它可以与直接写入URL的https一起工作。

<rewrite>
  <rules>
    <rule name="Special case www &amp; HTTPS off" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^www\.example\.com$" />
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="SeeOther" />
    </rule>
    <rule name="Redirect to www &amp; HTTPS" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^example\.com$" />
      </conditions>
      <action type="Redirect" url="{MapProtocol:{HTTPS}}://www.example.com/{R:1}" redirectType="SeeOther" />
    </rule>
  </rules>
  <rewriteMaps>
    <rewriteMap name="MapProtocol">
      <add key="on" value="https" />
      <add key="off" value="http" />
    </rewriteMap>
  </rewriteMaps>
</rewrite>
2ul0zpep

2ul0zpep5#

"这对我来说很好“

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

8mmmxcuj6#

这篇文章基本上是为那些谁需要重定向非www到www网址在windows主机。
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 example.com to www.example.com HTTPS” patternSyntax=”ECMAScript” stopProcessing=”true”>
<match url=”.*” />
<conditions>
<add input=”{HTTP_HOST}” pattern=”^example.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冲突,这里使用了两个单独的模式。
希望对你们有用...!!

bmp9r5qi

bmp9r5qi7#

请遵循以下步骤
1.登录到您的网站的cPanel
1.单击托管设置

1.选择您的首选域www.example.com

相关问题