2010-11-13 59 views
0

所有,CSS和图像不会页面加载载荷,但页面上的负载刷新

我有以下结构的PHP MVC应用程序:

helloworld 
- application 
    - configs 
    - controllers 
    - models 
    - layouts 
- include 
- library 
- public 
    - .htaccess 
    - index.php 
    - design 
     - css 
     - style.css 
     - struct.css 
     - js 
     - images 
     - bg.gif 

我已经配置在虚拟主机apache调用hello即指向helloworld/public/文件夹。所以,当我查看我的网站时,使用http://hello所有的CSS和图像都可以正常显示。

我将我的网站部署到具有与上述类似配置的其他服务器。当我使用http://test.com/hello访问网站时,CSS和其中包含的背景图片在Chrome和Safari中呈现绝对正常,但在IE,Firefox和Opera上背景图片失败。当页面在这些浏览器上刷新时,它工作得很好。我无法理解这种行为。

在我的CSS的URL是这样写的:

background-image: url(/design/images/bg.gif); 

和我的htaccess的是这样的:

Options -MultiViews -Indexes 

##################################################### 
# CONFIGURE media caching 
# 
Header unset ETag 
FileETag None 

Header unset Last-Modified 
Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT" 
Header set Cache-Control "max-age=7200, must-revalidate" 
SetOutputFilter DEFLATE 
# 
##################################################### 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

有人可以解释为什么背景图片和CSS是不是在页面加载正确呈现,但刷新页面后呈现?

+1

你确定'design'文件夹不在'public'下吗?我不明白它是如何工作的。另外,尝试使用像Firebug的“Net”标签或Fiddler这样的HTTP监视器来查看来自图像/ CSS请求的响应中发生了什么。 – Phil 2010-11-13 12:19:47

+0

是的..设计文件夹是在公共文件夹..我会纠正它..谢谢 – Jake 2010-11-13 15:43:54

+0

这仍然不能解决问题,虽然 – Jake 2010-11-13 16:40:32

回答

1

让做一些测试,以确定问题

1 - 尝试访问http://test.com/hello/design/images/bg.gif,它应该是可访问的,如果没有那么它的权限问题

2-然后尝试在你的CSS文件中使用绝对URL像background-image: url(http://test.com/hello/design/images/bg.gif);

3-如果你仍然面临那么,问题的设计问题,我想你使用的是IE 6 check out here

0

尝试在你的.htacce取消注释放气选项ss,也许你的服务器没有激活mod_deflate。

#SetOutputFilter DEFLATE