2011-02-24 24 views
2

我在URL重寫規則中遇到問題。 我使用UrlRewritingNet.UrlRewriter在asp.net網站上進行Url重寫的DLL。 我使用規則名稱作爲「高級」 &其他規則名稱DefaultRule用於任何用戶配置文件頁面(即任何用戶的配置文件頁面)。 當我輸入用戶名爲「AdvancedMachinesTools」。
的規則如下: -URL重寫規則在IIS中是否一致?

<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="Login" xmlns="http://www.urlrewriting.net/schemas/config/2006/07"> 
<rewrites> 
    <add name="advanced" virtualUrl="^~/advanced" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/advancedSearch.aspx" ignoreCase="true" /> 
    <add name="DefaultRule" virtualUrl="^~/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/UserProfile.aspx?uname=$1" ignoreCase="true"/> 
</rewrites> 
</urlrewritingnet> 

我收到錯誤消息「文件不存在」我在web.config文件中寫道DefaultRule最後。

我如何解決它...?

EDITED

例子 假設我的網站網址:www.abcd.com
1)先進的規則,我寫URL這樣www.abcd.com/advanced
規則:

<add name="advanced" virtualUrl="^~/advanced" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/advancedSearch.aspx" ignoreCase="true" /> 

2)默認用戶規則 假設用戶名:AdvancedEyecare它使用默認規則

<add name="DefaultRule" virtualUrl="^~/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/UserProfile.aspx?uname=$1" ignoreCase="true"/> 

當我輸入網址像http://www.abcd.com/AdvancedEyecare
後來我有錯誤,因爲規則中不使用用戶的默認規則1條高級規則「文件不存在」。我想調用userrule而不是1個高級規則。 如何解決?

+0

是否存在'〜/ UserProfile.aspx'?重寫規則從您以前的Page1.aspx/Page2.aspx方案中發生了顯着變化。 – tiago2014 2011-03-07 05:20:20

+0

舉例說明您需要的(原始地址 - >重新發送地址)對。 – tiago2014 2011-03-07 05:21:28

+0

Hi @tiagoinu〜/ UserProfile.aspx存在。 – 2011-03-07 06:08:05

回答

1

把一個$在第一圖案的末尾:

<add name="advanced" virtualUrl="^~/advanced$" destinationUrl="~/advancedSearch.aspx" /> 

這將比賽/advanced和重寫它/advancedSearch.aspx

http://www.abcd.com/advanced -> http://www.abcd.com/advancedSearch.aspx 

你想要的其他改寫是

http://www.abcd.com/AdvancedEyecare -> http://www.abcd.com/UserProfile.aspx?uname=AdvancedEyecare 
+0

它將在IIS 5.0,6.0和7.0中工作嗎? – 2011-03-07 06:27:43

+0

是的。 「^」表示地址的開始,「$」表示結束。 (正則表達式語法。) – tiago2014 2011-03-07 06:30:59

+0

非常感謝@tiagoinu它的偉大答案我感謝您的支持。良好的亞爾..我們可以結交朋友嗎? – 2011-03-07 06:31:24

0

起初我會改變重寫規則的順序。然而,爲什麼OlewinskiGroup會被匹配到「(。*)/ Group」中呢?沒有斜槓目前

+0

謝謝@citronas Ans:我們的要求是那/Group,所以我們從該用戶名中標識組,所以我們需要兩個單獨的規則。我試過上面的代碼,但沒有工作..是否有任何其他解決方案? – 2011-02-24 07:16:37