首页 > 解决方案 > 样式表未使用 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 的检查器,我会看到样式表在那里,如果我更改一行,它会突然应用。

有什么想法为什么这不起作用,或者可能是关于如何以不同方式实现预期结果的建议?清理浏览器缓存或更换浏览器无效。

标签: phphtmlcss

解决方案


@apokryfos 找到了解决方案:我必须在输出 CSS 之前发送内容类型。

header('Content-type: text/css');

谢谢大家的帮助。


推荐阅读