我正在编写自己的 MVC 实现,但我遇到了包含本地 CSS 文件的问题。基本上,我的应用程序中的所有请求都会转到一种方法,该方法正在分解它们以获得 Controller 和操作。例如:
localhost:8888/items/list
这个请求将被重定向到我的 index.php,我有:
Application::start($_SERVER['REQUEST_URI']);
然后请求被分解得到 Controller '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 类型文本/html 传输:” http://localhost:8888/css/style.css “。”
如果我尝试包含图像,那么问题就更大了,尽管至少我可以通过“包含”来显示图像,但仍然可以显示它们。任何想法如何解决这个问题?
P.S 我知道这个问题很可能是因为 css 是作为文本文件加载的,但是我不知道如何使用我当前的设置让它工作
最佳答案
尝试 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;
}
关于php - 在 PHP 中加载 include 时忽略 CSS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45119809/