我有两条规则:
<rewrite url="^/de(/.+)(\?(.+))?$" to="$1?lang=de&$3" />
<rewrite url="^/terms-and-conditions(\?(.+))?$" to="~/Pages/Terms.aspx?$2" processing="stop"/>
这应该是:
/terms-and-conditions
/de/terms-and-conditions
所有指向同一页面(Terms.aspx
)
这适用于所有测试用例,但以/de
开头且具有查询字符串的URL除外。
/de/terms-and-conditions?x=y
提供查询字符串:
?x=y?lang=de&
如何修复此规则以获得&符号而不是第二个问号?
我可以通过将其分为两个规则来实现它:
<rewrite url="^/de(/.+)\?(.*)$" to="$1?lang=de&$2" />
<rewrite url="^/de(/.+)$" to="$1?lang=de" />
但是为了简单起见,我在一条规则中喜欢这个!
答案 0 :(得分:1)
您可以使用以下正则表达式:
^\/de(\/[^?]+)(\?(.+))?$
这句话是因为(\/[^?]+)
(匹配/
,然后是/
以外的1个或多个字符)限制正则表达式只匹配/
s和(\?(.+))?
之间的1个子部分{1}}匹配可选(由于最终?
)文字?
,然后匹配换行符以外的任意数量的字符。