vanillaforums2.1版安装后样式丢失的原因
最近很多朋友反映vanilla 2.1版(或vanilla4china)安装后没有样式,css都是404 not found
我测试后发现的确如此,检查后发现是vanilla 2.1版新加入的asset系统与nginx 静态文件配置的冲突造成的。
vanilla2.1版在DebugAssets关闭的情况下,会把页面所需的所有css文件压缩成一个文件,并由 /utility/css/style/style-233c5b07.css 这样的路径引用
<link rel="stylesheet" type="text/css" href="/utility/css/style/style-233c5b07.css" media="all" />
/utility/css/style/style-233c5b07.css 这个路径形如静态文件,并不是在/utility/css/style/目录下,但是实际上是由 UtilityController的Css方法 渲染的,也就是说,它是由php来处理的。但是如果你的nginx配置里有
location ~ .*\.(js)?$ {
expires 30d;
access_log off;
}
这样的配置,/utility/css/style/style-233c5b07.css 这样的请求就不会被php接到,而是当做真的静态文件处理,于是就无法找到了。
解决方案:(三种选择其一)
-
在conf/config.php 中设置 $Configuration['DebugAssets'] = TRUE; 禁用掉vanilla的asset系统
-
在nginx配置中去掉 location ~ .*.(js)?$ { expires 30d; access_log off; } 这样的配置
-
针对 /utility/css/*.css 这样的访问路径禁用静态文件缓存。
评论已关闭!