我已经在我的遗留MVC项目中实现了捆绑,但现在我的CSS中的所有相对路径(我无法改变)都失败了,因为它们指向/bundles/style/content/images
而不是{{ 1}}他们曾经去过的地方。
如何将所有请求重定向到/content/images
到bundles/style/content/images
?
包名称的示例可能是:
/content/images
答案 0 :(得分:1)
正如this article所示,最简单的解决方案通常是以这样的方式命名您的捆绑包,使编译的文件名模仿您的资产将从中拉出的实际目录。例如,如果我使用此包名称:
~/content/css
然后编译后的文件如下:
/content/css?v=mGNb6rXCidBW01Yat0fYjijROYRAUCUgazmWOLfWJnQ1
哪个有效,因为这意味着我的相对路径从/Content
目录开始。
你遇到的问题很常见;足以让Nustet包,例如,Bootstrap和FontAwesome实际上将他们的/font
目录移动到站点根目录,因为那时他们CSS中的相对路径实际上是有效的。
如果你想要实际的重写,我认为只能在IIS级别完成;我将进行一些挖掘,看看ASP.NET是否支持本地重写(可以使用PHP的.htaccess
文件)。
编辑:像往常一样,Scott Gu拯救:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
答案 1 :(得分:1)
所以我发现了一个名为CssRewriteUrlTransform的ItemTransformer,它将网址重写为绝对网址,因此在捆绑后仍然可以找到资产。
在创建这样的包时使用:
bundles.Add(new StyleBundle("~/bundles/style/main").Include("~/Content/styles/main.css", new CssRewriteUrlTransform()));