在PHP中加载include时忽略CSS文件

时间:2017-07-15 15:25:03

标签: php html css

我正在编写自己的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是作为文本文件加载的,但我不知道如何使用我当前的设置

1 个答案:

答案 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;
}