两个重定向而不是一个用于小写

时间:2018-01-15 17:57:48

标签: redirect iis

当我将以下规则添加到重定向文件时:

<rule name="To Lowercase" enabled="true" stopProcessing="true">
  <match url=".*[A-Z].*" ignoreCase="false" />
  <conditions>
    <add input="{REQUEST_URI}" pattern="^/Images/" negate="true" />
    <add input="{REQUEST_METHOD}" pattern="GET" ignoreCase="true" />
  </conditions>
  <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />
</rule>

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

并尝试打开网站&#34; Foo.com&#34;观看网络行为我可以看到它首先从&#34; https://Foo.com&#34;重定向(301)到&#34; http://foo.com&#34;然后来自&#34; http://foo.com&#34;回到&#34; https://foo.com&#34;状态为302。

有没有办法修改此规则只进行一次重定向?

1 个答案:

答案 0 :(得分:1)

根据您在评论中的答案,您只需在规则中指定域名即可避免多次重定向。例如:

<rule name="To Lowercase" enabled="true" stopProcessing="true">
  <match url=".*[A-Z].*" ignoreCase="false" />
  <conditions>
    <add input="{REQUEST_URI}" pattern="^/Images/" negate="true" />
    <add input="{REQUEST_METHOD}" pattern="GET" ignoreCase="true" />
  </conditions>
  <action type="Redirect" url="https://www.foo.com/{ToLower:{R:0}}" redirectType="Permanent" />
</rule>

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