如何将文件夹下的请求重定向到另一个文件夹?

时间:2014-03-17 02:48:06

标签: c# asp.net-mvc

我已经在我的遗留MVC项目中实现了捆绑,但现在我的CSS中的所有相对路径(我无法改变)都失败了,因为它们指向/bundles/style/content/images而不是{{ 1}}他们曾经去过的地方。

如何将所有请求重定向到/content/imagesbundles/style/content/images

包名称的示例可能是:

/content/images

2 个答案:

答案 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()));