我想将url路径中的内容移到查询字符串中。这几乎就像子域重写一样。这里的重写应该是这样的: 〜/ ch-ar / rest - > 〜/休息?DOM = CH-AR 〜/ su-bd / rest?param = val - > 〜/休息PARAM = VAL&安培; DOM = SU-BD
我绝对可以通过匹配/替换来完成第一部分,而不是我能够解释的事情。我不确定是否有某种方法可以安全地将我的键值对添加到{QUERY_STRING}变量,但这可能是理想的。此名称值对的键永远不会更改,查询字符串的顺序对我来说并不重要。
答案 0 :(得分:1)
我建议使用以下2条规则,一条用于具有查询字符串的请求,另一条用于不具有查询字符串的请求。我使用了特定于语言的URI主干作为示例,并将动作设置为重定向,因此更容易测试。
<rule name="Language URI to QS - Existing Query String" stopProcessing="true">
<match url="^([a-z]{2}-[a-z]{2})(.*)" />
<conditions>
<add input="{QUERY_STRING}" pattern="(.+)" />
</conditions>
<serverVariables>
<set name="QUERY_STRING" value="{C:1}&dom={R:1}" />
</serverVariables>
<action type="Redirect" url="{R:2}" appendQueryString="true" redirectType="Found" />
</rule>
<rule name="Language URI to QS - No Query String" stopProcessing="true">
<match url="^([a-z]{2}-[a-z]{2})(.*)" />
<conditions>
<add input="{QUERY_STRING}" pattern=".+" negate="true" />
</conditions>
<serverVariables>
<set name="QUERY_STRING" value="dom={R:1}" />
</serverVariables>
<action type="Redirect" url="{R:2}" appendQueryString="true" redirectType="Found" />
</rule>