2011-09-02 134 views
0

我有附加的重定向和重寫規則。基本上,www.foo.com/vehicles/vehicle-detail.aspx?stockno=123456被重寫爲www.foo.com/123456。這符合我所制定的規則的預期。現在,如果我嘗試瀏覽不存在的頁面(即www.foo.com/test.aspx),則重寫規則有資格,IIS嘗試將請求轉發到www.foo.com/vehicles/vehicle-detail。 aspx(沒有查詢字符串)。在vehicle-detail.aspx頁面中,如果querystring中沒有有效的stockno,那麼我有代碼重定向到主頁,所以這就是發生了什麼。我不知道如何糾正規則,以免條件不符合規定。我附加了失敗請求跟蹤的規則和屏幕截圖,使我能夠查看請求/重寫規則。URL重寫模塊IIS7不正確處理重寫規則

<rule name="Redirect StockNo" enabled="true" stopProcessing="true"> 
<match url="^Vehicles/Vehicle-Detail\.aspx$" /> 
<conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
    <add input="{QUERY_STRING}" pattern="^stockno=([^=&amp;]+)$" /> 
</conditions> 
<action type="Redirect" url="{C:1}" appendQueryString="false" /> 

<rule name="Rewrite StockNo" enabled="true" stopProcessing="true"> 
<match url="^([^/]+)/?$" /> 
<conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
</conditions> 
<action type="Rewrite" url="Vehicles/Vehicle-Detail.aspx?stockno={R:1}" /> 

enter image description here

enter image description here

enter image description here

回答

0

你需要的是友善模式更獨特的東西。如果你知道它總是會是數字,你可以有:

<match url="^([\d]+)/?$" /> 

這隻會匹配www.foo.com/{digits}帶有可選尾隨斜線。

另一種選擇是使url類似於www.foo.com/s/{stockno}/。用/ s /你有一些你可以自信地匹配的獨特的東西。 S只是一個簡短的例子,所以你可以使用你想要的東西。

+0

非常感謝。你的迴應讓我想到如何配置我需要的東西。謝謝!! – obautista