[英]URL rewrite rule conflits in IIS?
URL重寫規則出現問題。 我在Usp.net網站中使用UrlRewritingNet.UrlRewriter Dll進行Url重寫。 我將規則名稱用作“高級”,將其他規則名稱用作DefaultRule,用於任何用戶配置文件頁面(即,任何用戶的配置文件頁面)。 當我輸入用戶名作為“ AdvancedMachinesTools ”時。
該規則如下:
<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條高級規則。 怎么解決呢?
將$
放在第一個模式的末尾:
<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
首先,我將更改重寫規則的順序。
<rule name="GroupDefaultRule">
<match url="Group" />
<action type="Rewrite" url="Page2.aspx?action=group" />
</rule>
<rule name="Group1Rule">
<match url="(.*)/Group" />
<action type="Rewrite" url="page1.aspx?action=group&uname={R:1}" />
</rule>
但是,為什么將OlewinskiGroup匹配為“(。*)/ Group”? 沒有斜杠
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.