我在Umbraco中使用UrlRewritingNet對產品和類別URL進行一些基本的URL重寫。我的本地機器(Visual Studio dev-webserver)和我們的內部開發服務器(帶有ISS 7,32位的Window Server 2008)都可以正常工作。但它在生產服務器上失敗,該服務器是具有IIS 7(64位)的Window Server 2008 R2。症狀是重寫規則未被觸發。服務器只是給我一個404錯誤。使用UrlRewritingNet進行URL重寫失敗,並在URL中輸入+ char
重寫規則是這樣的:
<add name="CategoryRewrite"
virtualUrl="^/products/(.*)/(.*).aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/default.aspx?umbPage=1&maincategory=$1&subcategory=$2"
ignoreCase="true"/>
的URL看起來如下 - 這不起作用:
http://example.net/products/category+name/sub+category.aspx
如果我改變的URL下面它適用於所有3個環境:
http://example.net/products/category%20name/sub%20category.aspx
很顯然,當+是我們在virtualUrl屬性的正則表達式失敗編輯爲空間字符。但我必須承認,我可以找出爲什麼正則表達式僅在Windows 2008 R2服務器上失敗。
我在尋找有關Windows Server 2008 R2和其他2種環境之間差異的見解。我應該尋找什麼?
我已確認System.Web.RegularExpressions.dll是服務器上的相同版本。
確實很奇怪。關於絕對URL的很好的理論,但我將不得不把它擊倒。正則表達式也可以在生產服務器上使用,而不是在URL中使用+字符。它似乎從來沒有路由到UrlRewritingNet。 – 2010-09-30 05:52:51