Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为开发和生产环境配置CSS中图像的路径_Css_Url_Static_Hosting - Fatal编程技术网

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

为开发和生产环境配置CSS中图像的路径,css,url,static,hosting,Css,Url,Static,Hosting,我目前正在开发一个网站,我有我的本地环境,它托管在带有IIS 5.1的XP设备上。我正在使用ASP MVC2和.NET Framework 4.0 我想知道的是,是否有一种方法可以在web.config中“配置”所有图像的路径(或任何其他方法),这样当我的CSS使用url()时,它就会自动知道在哪里查找 这背后的主要原因是,我们有很多图像和文档,我们不想存储在源代码管理中,因为它们与源代码管理无关,因为它与我们的内容编写者有很大的不同 为他们提供一个开发和产品空间来编辑、审查和部署他们自己的文档

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

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

这背后的主要原因是,我们有很多图像和文档,我们不想存储在源代码管理中,因为它们与源代码管理无关,因为它与我们的内容编写者有很大的不同

为他们提供一个开发和产品空间来编辑、审查和部署他们自己的文档也是一个巨大的生产力优势,如果可能的话,我希望保持这种方式,因为我们有一种机制来验证我们站点中链接的所有文件是否有效

因此,例如,在我的dev box上,我希望使用“…”但在部署时,我希望他们使用“…”

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

我被告知要使用mod_rewrite和/或htaccess,但我对此没有很好的文档记录,就我目前交付此项目的时间而言,似乎相当复杂

总而言之,我希望你们能分享你们的想法和建议,让我可以像上面所描述的那样工作


非常感谢您的阅读

没有简单的解决方案可以完全满足您的需求。 您可能必须将.css文件输出为动态页面,在每个URL之前替换配置中的字符串(在css中)

您真的需要子域吗?为什么不使用子文件夹呢?url('/css/yourcss.css')对于开发人员和生产人员都是通用的


(我知道Cookie带来的额外流量会有问题,但这还是很容易做到的)

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

谢谢大家的帮助! 我终于在url重写中找到了解决问题的方法! 我需要“重定向”而不是“重写”url

现在它按预期工作

我使用Intelligencia的URL重写器执行以下简单规则:

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

我意识到这个问题很久以前就被冷落了,但这是我在谷歌搜索的第一个结果,所以我想我应该尝试一下,以防它对其他人有帮助

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

我在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>

返回
{
背景:url(@url.Content(“~/Content/icons/gray/back.png”))不重复;
}
链接
{
背景:url(@url.Content(“~/Content/icons/gray/link.png”))不重复;
}

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

我的问题是,我不希望内容成为宿主应用程序的一部分。内容“应该”托管在它自己的域中:for dev:application=>www.MyApp.dev(驻留在服务器A上)content=>www.static.MyApp.dev(驻留在服务器B上)用于生产:应用程序=>www.MyApp.com(驻留在服务器C上)内容=>www.static.MyApp.com(驻留在服务器D上)也许我把所有的事情都复杂化了,但这些是我得到的要求…是的,我理解,但是,在这种情况下,内容是在CSS文件所在的同一物理位置下提供的…我的要求是网站必须部署到web服务器A,但内容驻留在托管st的web服务器上的服务器B上atic内容。目前唯一的方法是在服务器B上托管CSS文件,这样图像或任何其他内容都会与CSS文件相关,但这不是一个解决方案,因为我必须单独部署CSS文件并将其移出项目,这也会给源代码管理带来一些麻烦……很抱歉,我不这么做了对你来说,这太糟糕了:-)对任何静态文件的每个请求都会在你的应用程序服务器上引起额外的请求。这相当慢。唯一正确的解决方案是将最终URL放在你的CSS文件中。这可以动态完成,也可以使用一些模板工具静态完成。那么,你有任何指针可以动态或静态完成吗?