【问题标题】:Ignore match in web.config rewrite rule忽略 web.config 重写规则中的匹配
【发布时间】:2015-11-27 01:10:14
【问题描述】:

我有一个问题,web.config 中的规则捕获了我希望它忽略的内容。

我有:

http://domain.com/video-conferencing-room/australia/australian-capital-territory/barton

被以下规则所吸引。我已经添加了一部分,希望能解决它,但没有快乐。该路由

 <rule name="video-conferencing-room-country">
        <match url="^video\-conferencing\-room/([0-9a-z- ]+)" />
        <conditions>
            <add input="{HTTP_HOST}" matchType="Pattern" pattern="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)/([0-9a-z-, ]+)" ignoreCase="true"  />
        </conditions>
        <action type="Redirect" url="/meeting-rooms/{UrlEncode:{R:1}}" redirectType="Permanent" />              
    </rule>

但这种情况正在停止这样的网址: http://domain.com/video-conferencing-room/australia

不遵守规则。

我更新为使用 {URL},并且: http://domain.com/video-conferencing-room/australia

现在可以了,

但我仍然有一个问题

http://domain.com/video-conferencing-room/australia/australian-capital-territory/barton

正在被这条规则重写:

 <rule name="video-conferencing-room country state">
        <match url="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)" />
        <conditions>
            <add input="{URL}" matchType="Pattern" pattern="^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)/([0-9a-z-, ]+)" ignoreCase="true" negate="true"  />
        </conditions>
        <action type="Redirect" url="/meeting-rooms/{UrlEncode:{R:1}}/{UrlEncode:{R:2}}" redirectType="Permanent" />            
    </rule>

当我希望它被忽略时。

你知道我做错了什么吗?

【问题讨论】:

    标签: url-rewriting iis-7 web-config


    【解决方案1】:

    您的条件不正确,您使用 {HTTP_HOST} 进行设置,这只是主机名部分,即在您的示例 domain.com 中。

    尝试使用 {URL} 作为输入,其中将包含包含视频会议...部分的 URL。

    【讨论】:

    • 谢谢,这有帮助,但我仍有问题。我已经编辑了我原来的问题
    【解决方案2】:

    尽量在最后加$

    ^video\-conferencing\-room/([0-9a-z- ]+)/([0-9a-z-, ]+)$
    

    您可以删除条件。 $ 表示字符串结尾

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 2013-09-27
      • 2018-11-13
      • 1970-01-01
      • 2017-05-03
      • 2022-01-13
      • 2011-06-14
      • 2019-03-13
      相关资源
      最近更新 更多