重写规则:有关正则表达式模式的问题

时间:2018-11-14 20:29:07

标签: asp.net

我不知道为什么某个重写规则不起作用。 我有这个规则:

<rule name="CanonicalHostNameRule1" enabled="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="testsite\.com" negate="true" />
  </conditions>
  <action type="Redirect" url="https://www.testsite.com/{R:1}" />
</rule>

当我进入IIS并使用URL重写模块时,我使用“ http://testsite.com”进行了测试。这可行。但是将更新的web.config放入生产环境后,这些是我在url中键入以下内容的结果:

我可以通过输入以下变体形式来访问该网站:

https://www.testsite.com
http://www.testsite.com
www.testsite.com
testsite.com 

但是输入时,我收到错误消息“ testsite.com拒绝连接”。

https://testsite.com
http://testsite.com

我想念的是什么,这妨碍了最后两个工作?似乎我拥有的重写规则应捕获所有请求。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我的猜测是,对于最后两个示例,它们的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="testDiv"><span>I like it </span> Hello World </div>将没有www,这意味着它将与您的条件匹配,从而导致您的求反属性跳过规则操作。

我建议您启用IIS Failed Request Tracing以便准确确定为什么重写规则不适用于这些值。