У меня есть стандартный проект MVC3 со страницей макета и т. д. Теперь мне нужно сделать красивые URL-адреса. Я начал играть с модулем перезаписи URL. Я пытаюсь перевести http://localhost/Photographer/Pablo
в http://localhost/category-about.aspx?displayName=Pablo
, и вот мое правило перезаписи (очень простое!):
<system.webServer>
<rewrite>
<rules>
<rule name="about" patternSyntax="Wildcard">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="\.png|\.js|\.css|\.jpg" negate="true" />
</conditions>
<match url="photographer/*" />
<action type="Rewrite" url="category-about.aspx?displayName={R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
все условия, которые вы видите, я добавил после того, как погуглил, пытаясь решить проблему - хотя они не помогли.
Я нашел эту страницу: http://www.iis.net/learn/extensions/url-rewrite-module/url-rewriting-for-aspnet-web-forms — в котором говорится, что оператор ~ правильно обрабатывается сервером, когда правила перезаписи применяемый. Но в моем случае этого явно не происходит - см. прикрепленное изображение:
Каково решение моей проблемы? Как я должен ссылаться на файлы CSS/JS? Я использую MVC3 в IIS 7.5.
ОБНОВЛЕНИЕ: изображение не очень четкое, но оно показывает, что моя страница MasterLayout
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
но это решено как
http://localhost/Photographer/Content/Site.css - and it gives 404
вместо
http://localhost/Content/Site.css - which gives 200
когда я запрашиваю этот URL: http://localhost/Photographer/Pablo
. Логика работает нормально — мой контроллер получает запрос и отображает страницу — но CSS и изображения отсутствуют (потому что к ним добавлена неправильная корневая папка).