【问题标题】:IIS: Rewrite URL with regex but keep query stringsIIS:使用正则表达式重写 URL 但保留查询字符串
【发布时间】:2020-02-27 19:53:08
【问题描述】:

我有以下链接

https://example.com/myapp/green?&lang=en&instance=some%20instance

我需要重写到下面的链接

https://example.com/myapp?color=green&lang=en&instance=some%20instance

链接中的颜色可以是任何颜色,但需要像第二个链接一样重写,以便尾部斜杠替换为?,后跟单词color=,最后是?的颜色词需要删除。

/myapp/green? 变为 /myapp?color=green

/myapp/blue? 变为 /myapp?color=blue

以此类推,同时保持查询字符串 &lang=en&instance=some%20instance 的其余部分完好无损

我已经尝试过正则表达式,但我通常会捕获所有内容或无意中省略了查询字符串的其余部分。

关于最佳方法的任何想法?

编辑:注意到 IIS 在应用于应用程序级别(而不是网站级别)时,输入 URL 路径位于“/myapp/”之后,我需要删除尾部斜杠。这是否意味着我必须将其应用到网站级别?

【问题讨论】:

    标签: regex iis url-rewriting


    【解决方案1】:

    您可以使用以下 url 重写规则(在站点级别添加此规则):

    <rule name="color query" enabled="true" stopProcessing="true">
                    <match url="myapp/(.*)/$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{QUERY_STRING}" pattern="lang=(.*)&amp;instance=(.*)" />
                    </conditions>
                    <action type="Redirect" url="http://www.sample1.com/myapp?color={R:1}&amp;lang={C:1}&amp;instance={C:2}" appendQueryString="false" />
                </rule>
    

    注意:您无法从 URL 中删除 myapp/,它将自动添加到 URL 中。

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2017-06-09
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多