Я использую UrlRewritingNet в Umbraco, чтобы выполнить базовую перезапись URL-адресов для продуктов и категорий. Все нормально на моей локальной машине (Visual Studio dev-webserver) и на нашем внутреннем сервере разработки (Window Server 2008 с ISS 7, 32 бит). Но происходит сбой на производственном сервере, который является Window Server 2008 R2 с IIS 7 (64-разрядная версия). Симптом заключается в том, что правило перезаписи не запускается. Сервер просто выдает мне ошибку 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-адрес на следующий, он будет работать во всех трех средах:
http://example.net/products/category%20name/sub%20category.aspx
Понятно, что регулярное выражение в атрибуте virtualUrl завершается ошибкой, когда + используется для пробела. Но я должен признать, что я могу понять, почему регулярное выражение не работает только на сервере Windows 2008 R2.
Я ищу информацию о различиях между Windows Server 2008 R2 и 2 другими средами. Что я должен искать?
Я подтвердил, что System.Web.RegularExpressions.dll является той же версией на серверах.