我有一个带有布局页面等的标准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>
你看到我在googling尝试解决问题后添加的所有条件 - 但他们没有帮助。
我找到了这个页面:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewriting-for-aspnet-web-forms - 表示在应用重写规则时服务器正确处理〜运算符。但在我的情况下,这显然不会发生 - 请参阅附图:
我的问题的解决方案是什么?我该如何引用CSS / JS文件?我在IIS 7.5上使用MVC3。
更新 图像不是很清楚 - 但它显示我的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
当我请求此网址时:http://localhost/Photographer/Pablo
。逻辑工作正常 - 我的控制器获取请求并呈现页面 - 但它的CSS和图像丢失(因为它们有错误的根文件夹)。
答案 0 :(得分:4)
尝试使用Request.ApplicationPath。这样的事情应该有效:
<link href="@(Request.ApplicationPath + "Content/Site.css")" rel="stylesheet" type="text/css" />
答案 1 :(得分:2)
你说过这句话:
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" />
解析为
“http:// localhost / Photographer / Content / Site.css”
,这是绝对正确的,这是如何解决的。你的css在哪里,css中图像的路径是正确的吗?
答案 2 :(得分:0)
而不是这个
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
不使用波浪号(〜)
尝试此操作<link href="@Url.Content("/Content/Site.css")" rel="stylesheet" type="text/css" />
这应解析为您想要的http://localhost/Content/Site.css