【发布时间】:2013-07-03 13:34:17
【问题描述】:
我想像这样重写 url(DotNetNuke Friendly URLs):
发件人:/search.aspx?query=test 收件人:~/SearchResults?search=test
我尝试了各种组合,但似乎没有考虑到问号后面的网址部分
<RewriterRule>
<LookFor>.*/search.aspx?query=(.+)</LookFor>
<SendTo>~/SearchResults?Search=$1</SendTo>
</RewriterRule>
但它不起作用..
我试过了:
<RewriterRule>
<LookFor>.*/search.aspx\?query=(.+)</LookFor>
<SendTo>~/SearchResults?Search=$1</SendTo>
</RewriterRule>
但这也不适用于 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>
是否有什么导致它跳过?
如果有帮助的话,这是友好 url 重写器的源代码。我对正则表达式不是很好,所以我可以使用一些帮助。
【问题讨论】:
-
也许这个链接有帮助:stackoverflow.com/questions/7083316/….
-
添加了另一个 url 重写器。我希望在不启用 IIS url 重写器的情况下解决这个问题。因为具有 DNN 的那个可以由管理员修改..
-
我不擅长正则表达式。你认为它是由于 web.config 中的 regexMatch="[^a-zA-Z0-9 _-]" 而跳过吗?我尝试添加'?和 '\?'但随后我在整个网站上收到 500 错误
标签: asp.net regex url-rewriting dotnetnuke