URL 重写以问号中断

Vai*_*arg 1 regex asp.net dotnetnuke url-rewriting

我想重写 url (DotNetNuke 友好 URL),如下所示:

/search.aspx?query=test到:~/SearchResults?search=test

我尝试过各种组合,但看起来它没有考虑网址中问号后面的部分

  <RewriterRule>
      <LookFor>.*/search.aspx?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>
Run Code Online (Sandbox Code Playgroud)

但它不起作用..

我努力了:

  <RewriterRule>
      <LookFor>.*/search.aspx\?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>
Run Code Online (Sandbox Code Playgroud)

但这也不适用于 url /search.aspx?query=test。我的 search.aspx 收到 404

这是DotNetNuke的web.config中的相关部分:

<friendlyUrl defaultProvider="DNNFriendlyUrl">
  <providers>
    <clear />
    <add name="DNNFriendlyUrl"
         type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" 
         includePageName="true" 
         regexMatch="[^a-zA-Z0-9 _-]" 
         urlFormat="humanfriendly" />
  </providers>
</friendlyUrl>
Run Code Online (Sandbox Code Playgroud)

是否有什么原因导致它跳过?

这是友好的 url 重写器的源代码(如果有帮助的话)。我不太擅长正则表达式,所以我可以使用一些帮助。

https://dotnetnuke.codeplex.com/SourceControl/latest#Trunk/Content/Community/HttpModules/UrlRewrite/UrlRewriteModule.cs

TGH*_*TGH 5

.*/search.aspx\?query=(.+)
Run Code Online (Sandbox Code Playgroud)

你必须逃离?带有 \ 因为它是正则表达式关键字