URL重写双附加问号
本文关键字:重写 URL | 更新日期: 2023-09-27 18:08:38
我有两条规则:
<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" />
但为了简单起见,我希望在一个规则中!
您可以使用以下正则表达式:
^'/de('/[^?]+)('?(.+))?$
这是因为('/[^?]+)
(匹配/
,然后匹配/
以外的1个或多个字符)限制了regex在/
s之间只匹配1个子部分,而('?(.+))?
匹配可选(由于最终的?
)一个文字?
,然后是除换行符以外的任何数量的字符。