2010-07-15 69 views
5

我目前正在开发一个网站,我这是在与IIS 5.1的XP盒托管我的本地环境。我正在使用ASP MVC2和.NET Framework 4.0。配置路径在CSS图片用于开发和生产环境

我想知道的是,如果有一种方式来在web.config(或任何其他方式)“配置”我的所有图像的路径,以便当我的CSS使用url()时,它会自动知道去哪里看对于。

背后的主要原因是我们有很多图片和文档,我们不想将它们存储在我们的源代码控制中,因为它与内容编写者之间的差异很大,因此与它们无关。

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

因此,举例来说,在我的dev的盒子,我想用“http://static.devserver/Images/ ......”但在部署的时候,我想他们使用“http://static.productionserver/Images/ ......”

显然,考虑到我的要求上面,在这个场景中托管静态子域的CSS不会工作,或者我错过了什么?

我被告知要使用mod_rewrite和/或htaccess,但我没有很好的记录本上,似乎对我现在所拥有的,提供该项目的时间相当复杂。

所有的一切,我希望你们在那里与您分享我描述它上面我能得到这个工作,你的想法和建议。

非常感谢您的阅读!

回答

0

有没有简单的解决方案做的正是你想要的。 您可能需要输出.css文件作为动态页面,在每个URL之前替换一个字符串(在CSS中)。

您是否真的需要一个子域名?为什么不使用子文件夹?url('/ css/yourcss的CSS)是普遍的两种开发和生产。

(好吧,我知道有与饼干额外的交通问题,不过,这是WAAAY容易做到)

+0

我的问题是,我不希望内容成为主机应用程序的一部分。 内容 “应该” 在它自己的域名托管: 用于开发: 应用=> www.MyApp.dev(驻留在服务器A) 内容=> www.static.MyApp.dev(驻留在服务器B) 对于生产: 应用=> www.MyApp.com(驻留在服务器C) 含量=> www.static.MyApp.com(驻留在服务器d) 也许我过于复杂一切,但这些都是我的要求... – 2010-07-15 13:18:29

+0

哦,我的答案看起来很丑!对不起,格式化... – 2010-07-15 13:19:47

0

BarMonster的相对路径是这样的去该URL(“/子文件夹/ yourfile.ext”),这是做网站内的图片,大多数链接能够测试和现场环境之间进行转换的最佳途径。

+0

是的,我明白,但是,在这种情况下,内容是在相同的物理位置CSS文件... 我的要求是,该网站必须部署到Web服务器A,但内容驻留在托管静态内容的Web服务器上的服务器B上。 现在唯一的方法是在服务器B上托管CSS文件,以便图像或任何其他内容将与css文件相关,但这不是一个解决方案,因为我必须单独部署我的css文件并将它们移出对于源代码管理也会造成一些痛苦... – 2010-07-15 13:30:32

0

非常感谢很多人试图帮助我! 我终于再次在url重写中寻找解决方案来解决我的问题! 我需要“重定向”而不是“重写”URL!

现在按预期工作!

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

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

对不起,让你失望,但这太糟糕了:-) 对任何静态文件的每个请求都会在你的应用服务器上产生额外的请求。这很慢。 唯一正确的解决方案是在CSS文件中放置最终的URL。这可能是动态完成的,或者是静态使用一些模板工具。 – BarsMonster 2010-07-15 22:23:00

+0

那么,你有没有动态或静态的指针呢? – 2010-07-16 21:12:41

0

我意识到这个问题,就跟着去了前段时间感冒,但它是我在谷歌搜索的第一个结果,所以我想我会如果有帮助他人的话,可以试一试。

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

我在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,您可以在您的母版页中执行相同的操作。