Asp.net URL重写带问号的中断

Asp.net URL重写带问号的中断,asp.net,regex,url-rewriting,dotnetnuke,Asp.net,Regex,Url Rewriting,Dotnetnuke,我想重写url(DotNetNuke友好url),如下所示: 从:/search.aspx?query=test到:~/SearchResults?search=test 我尝试过各种组合,但它似乎没有考虑url中问号后面的部分 <RewriterRule> <LookFor>.*/search.aspx?query=(.+)</LookFor> <SendTo>~/SearchResults?Search=$1<

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

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

我尝试过各种组合,但它似乎没有考虑url中问号后面的部分

  <RewriterRule>
      <LookFor>.*/search.aspx?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>
是否有什么原因导致它跳过

这是友好的url重写器的源代码(如果有帮助的话)。。我对正则表达式不是很在行,所以我需要一些帮助

你一定要逃走吗?因为它是正则表达式关键字,所以使用\


你一定要逃走吗?使用\因为它是正则表达式关键字

,问号需要用“\?”转义


.*/search.aspx\?查询=(.+)$
~/SearchResults?Search=$1

问号需要用“\?”转义


.*/search.aspx\?查询=(.+)$
~/SearchResults?Search=$1

不适用于我:('.*/search.aspx\?query=(.+)~/SearchResults?search=$2'@DanielGimenez你确定吗?你用DNN网站测试过吗?@VaibhavGarg:不,我用我自己的网站和IIS url重写模块测试过。不适用于我:('.*/search.aspx\?query=(.+)~/SearchResults?Search=$2'@DanielGimenez你确定吗?你用DNN网站测试过吗?@VaibhavGarg:没有,我用我自己的网站和IIS url重写模块测试过。也许这个链接有帮助:。这会在混合中添加另一个url重写器。。我希望在不启用IIS url重写器的情况下解决这个问题。因为使用DNN的可以由管理员..我对正则表达式不太在行..您认为它是否因为正则表达式匹配=“[^a-zA-Z0-9_-]”而跳过了在web.config中?我尝试添加了“?”和“\?”,但是在整个网站上出现了500个错误。也许这个链接有帮助:。这会在混合中添加另一个url重写器。我希望在不启用IIS url重写器的情况下解决这个问题。因为管理员可以修改带有DNN的。我不太擅长正则表达式。你认为它是因为正则表达式匹配而跳过的吗?“[^a-zA-Z0-9-]”在web.config中?我尝试添加了“?”和“\?”,但在整个网站上出现了500个错误
  <RewriterRule>
      <LookFor>.*/search.aspx\?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>
<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>
.*/search.aspx\?query=(.+)
    <RewriterRule>
      <LookFor>.*/search.aspx\?query=(.+)$</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
    </RewriterRule>