我正在编写自己的MVC实现,我遇到了包括本地CSS文件在内的问题。基本上我的应用程序中的所有请求都将转向一个方法,该方法正在分解它们以获得控制器和操作。例如:
localhost:8888/items/list
此请求将被重定向到我的index.php:
Application::start($_SERVER['REQUEST_URI']);
然后请求被分解以获得控制器'items'和action'list' 到目前为止一切都很好,我没有意识到这个问题,因为我正在使用CDN的bootstrap。但是现在如果我在我的html中加入类似的东西:
<link rel="stylesheet" type="text/css" href="/css/style.css">
这将再次转到我的方法,它将无法正常工作。 我尝试的是检查URI是否包含'css',如果它只包含文件:
if(preg_match('/css/',$uri)){
include "../webroot/$uri";}
这在加载css方面起作用,但css被忽略了。我也得到了
“资源解释为样式表,但使用MIME类型text / html传输:”http://localhost:8888/css/style.css“。”
如果我试图包含图像,问题就更大了,尽管图像至少我能够显示它们但是再次通过“包含”。任何想法如何解决这个问题?
P.S我知道问题很可能是因为css是作为文本文件加载的,但我不知道如何使用我当前的设置
答案 0 :(得分:1)
使用header("Content-type: text/css; charset: UTF-8");
尝试file_get_contents
,而不是像这样包含
if(preg_match('/css/',$uri)){
header("Content-type: text/css; charset: UTF-8");
if(!$file = file_get_contents("http://localhost:8080/project_name/webroot/$uri")) return 0;
echo $file;
}