【发布时间】:2011-04-18 19:51:52
【问题描述】:
我在 Umbraco 中使用 UrlRewritingNet 对产品和类别 URL 进行一些基本的 URL 重写。在我的本地机器(Visual Studio dev-webserver)和我们的内部开发服务器(带有 ISS 7、32 位的 Window Server 2008)上一切都很好。但它在生产服务器上失败,即带有 IIS 7(64 位)的 Window Server 2008 R2。症状是没有触发重写规则。服务器只是给我一个 404 错误。
重写规则如下:
<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 与服务器上的版本相同。
【问题讨论】:
标签: .net iis-7 url-rewriting umbraco