为开发和生产环境配置CSS中图像的路径

时间:2010-07-15 13:01:11

标签: css url static hosting

我正在开发一个网站,我的本地环境托管在带有IIS 5.1的XP机器上。我正在使用ASP MVC2和.NET Framework 4.0。

我想知道的是,如果有一种方法可以在web.config(或任何其他方式)中“配置”所有图像的路径,这样当我的CSS使用url()时它会自动知道在哪里查找

这背后的主要原因是我们有很多图像和文档,我们不希望将它们存储在源代码控制中,因为它们与我们的内容编写器有很大的不同,因此将它们放在那里并不相关。

为他们编辑,审查和部署他们自己的文档提供开发和生产空间也是生产力的巨大好处,我希望尽可能保持这种方式,因为我们有一种机制来验证链接的所有文件我们的网站是有效的。

所以,例如,在我的开发框中,我想使用“http://static.devserver/Images/ ...”但是在部署时,我希望他们使用“http://static.productionserver/Images/ ...”

显然,考虑到我上面的要求,在静态子域上托管CSS在这种情况下不会有用,或者我可能错过了什么?

我被告知要使用mod_rewrite和/或htaccess,但我对此并没有很好的记录,而且在我现在提供这个项目的时候看起来相当复杂。

总而言之,我希望你们在那里分享你们的想法和建议,以便我能够按照上面的描述来实现这一点。

非常感谢您的阅读!

4 个答案:

答案 0 :(得分:0)

没有简单的解决方案可以完全按照您的意愿行事。 您可能必须将.css文件输出为动态页面,在每个URL之前替换配置中的字符串(在CSS中。

你真的需要一个子域吗?为什么不使用子文件夹? url('/ css / yourcss.css')对开发和生产都是通用的。

(嗯,我知道来自Cookie的额外流量存在问题,但是,这仍然是WAAAY更容易做到的事情)

答案 1 :(得分:0)

BarMonster的相对路径是要走的路。 url('/ subfolder / yourfile.ext')。这是制作图像的最佳方式,网站中的大多数链接都可以在测试环境和实时环境之间进行转换。

答案 2 :(得分:0)

非常感谢你帮助我! 我终于在url重写中再次挖掘以找到我的问题的解决方案! 我需要“重定向”而不是“重写”网址!

现在它按预期工作了!

我正在使用Intelligencia的URL重写器这个简单的规则:

<rewriter>
        <redirect url="^.+\.(?:jpg|bmp|png|gif)$" to="http://myDEVserver$0" processing="stop" />
</rewriter>

答案 3 :(得分:0)

我意识到这个问题在很久以前就已经冷了,但这是我在google中搜索的第一个结果,所以我想我会抓住它来防止其他人。

我解决这个问题的方法是将包含url()语句的CSS文件中的所有规则移到我的视图中。

我在MVC 3中使用Razor,所以我在我的基本布局文件中包含了一个样式部分,并将所有麻烦的url规则放在那里。然后我可以使用MVC引擎在运行时确定适当的url。您可以修改它以动态查看其他域。

<style type="text/css">
    .back
    {
        background: url(@Url.Content("~/Content/icons/gray/back.png")) no-repeat;
    }
    .link
    {
        background: url(@Url.Content("~/Content/icons/gray/link.png")) no-repeat;
    }
</style>

语法适用于Razor引擎,但对于MVC 2,您可以在MasterPage中执行相同的操作。