2013-07-03 70 views
0

我想重寫URL(DotNetNuke的友好的URL),象這樣:URL重寫休息

來源:/search.aspx?query=test要:~/SearchResults?search=test

我曾嘗試各種組合,但它看起來像它不考慮我曾嘗試URL的問號

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

但它不工作後的部分..

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

但這也不適用於網址/search.aspx?query=test。我得到一個404 search.aspx

這是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重寫器,如果有幫助..我不是那麼好的正則表達式,所以我可以使用一些幫助。

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

+0

也許這個鏈接幫助:http://stackoverflow.com/questions/7083316/friendly-urls-in-dotnetnuke-troubleshooting。 –

+0

,添加另一個URL重寫器的混合..我希望能夠解決這個問題,而無需啓用IIS URL重寫器。作爲DNN的一個可以由管理員修改.. –

+0

我不擅長與正則表達式..你認爲這是跳過由於regexMatch =「[^ a-zA-Z0-9 _-]」在網絡中。配置?我嘗試添加'?'和'\'但後來我得到了整個網站 –

回答

3
.*/search.aspx\?query=(.+) 

你要逃離?與\因爲它是一個正則表達式關鍵字

+1

500錯誤我測試過,它的工作原理。 –

+0

不是爲我工作:(\t \t \t 。*/search.aspx \?查詢=(。+) \t \t 〜/ SearchResult所代理搜索= $ 16 \t「 –

+0

@DanielGimenez你確定嗎?你是否使用DNN網站進行測試? –

0

問號需要用「\?」轉義。

<RewriterRule> 
     <LookFor>.*/search.aspx\?query=(.+)$</LookFor> 
     <SendTo>~/SearchResults?Search=$1</SendTo> 
    </RewriterRule> 
+0

不起作用我有DDN 07.00.04(180 )如果有幫助 –