php - 样式表未使用 php readfile() 加载
问题描述
我想将所有流量重定向到一个页面,我根据用户输入的 URL 决定输出什么。到目前为止它工作正常,唯一不起作用的是加载样式表。目前我用 XAMPP 在本地尝试了所有这些。
我将代码减少到最低限度以指出问题。
.ht 访问:
RewriteEngine on
RewriteRule ^((?!test\.php).+)$ /test.php [L]
除了 test.php 之外的所有内容都被重写为 test.php
测试.php:
<?php
$path = $_SERVER['REQUEST_URI'];
// remove any slashes in front of the path
$path = ltrim($path, '\\');
$path = ltrim($path, './');
if (pathinfo($path, PATHINFO_EXTENSION) == "css") {
readfile($path);
}
else {
echo("<!DOCTYPE html>\n");
echo("<html>\n");
echo("<head>\n");
echo("<link rel='stylesheet' href='/stylesheets/test-style.css' />\n");
echo("</head>\n");
echo("<body>\n");
echo("<h2>Test Heading</h2>\n");
echo("</body>\n");
echo("</html>\n");
}
?>
我检查文件扩展名,如果是 CSS,我输出文件,如果不是,我逐行编写一些 HTML 代码。
测试样式.css:
h2 {
color: yellow;
}
如果我在浏览器中打开任何地址,则会显示 HTML,但不会应用样式表。其他一切都有效(我可以加载一个网站图标,javascript 有效),但不是样式表。我可以直接在 '' 标签内输出代码,但当然,这不是一个好的解决方案。如果我使用 Firefox 的检查器,我会看到样式表在那里,如果我更改一行,它会突然应用。
有什么想法为什么这不起作用,或者可能是关于如何以不同方式实现预期结果的建议?清理浏览器缓存或更换浏览器无效。
解决方案
@apokryfos 找到了解决方案:我必须在输出 CSS 之前发送内容类型。
header('Content-type: text/css');
谢谢大家的帮助。
推荐阅读
- powershell - 如何找到哪个嵌套循环是优秀的
- python - 使用 Selenium 和 Beautifulsoup 进行 Python 抓取无法提取嵌套标签,错误对象不可调用
- xpsdocument - 如何通过修改 .gpd 文件将 pasersize 添加到 Microsoft XPS 文档编写器
- java - 在构造函数中写入成员变量的数据类型有什么问题?
- docker - 从 Apache Airflow 构建 docker 镜像
- react-native - 导航 getParam 状态在第一次导航时未定义
- operating-system - 使用陷阱表的目的是什么
- python - 网络抓取将表中的所有值保存两次
- node.js - Express.js 重定向导致 Chrome 控制台中出现“加载资源失败”错误
- c# - 更新 SQL 查询不起作用 ASP.NET Core C# 控制台应用程序