Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用php readfile()加载样式表_Php_Html_Css - Fatal编程技术网

未使用php readfile()加载样式表

未使用php readfile()加载样式表,php,html,css,Php,Html,Css,我想将所有流量重定向到一个页面,在这个页面上,我根据用户输入的URL决定输出什么。到目前为止,它工作正常,唯一不起作用的是加载样式表。 目前,我用XAMPP在本地尝试了所有这一切 我将代码缩减到最低限度,以指出问题所在 .htaccess: RewriteEngine on RewriteRule ^((?!test\.php).+)$ /test.php [L] 除了test.php之外的所有内容都重写为test.php test.php: <?php $path = $_SERV

我想将所有流量重定向到一个页面,在这个页面上,我根据用户输入的URL决定输出什么。到目前为止,它工作正常,唯一不起作用的是加载样式表。 目前,我用XAMPP在本地尝试了所有这一切

我将代码缩减到最低限度,以指出问题所在

.htaccess:

RewriteEngine on

RewriteRule ^((?!test\.php).+)$ /test.php [L]
除了test.php之外的所有内容都重写为test.php

test.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");
}

?>
如果在浏览器中打开任何地址,将显示HTML,但不应用样式表。其他一切都可以工作(我可以加载favicon,javascript可以工作),但样式表不行。我可以直接在“”标记内输出代码,但这当然不是一个好的解决方案。 如果我使用firefox的inspector,我会看到样式表在那里,如果我更改了一行,它会突然应用


你知道为什么这样做不起作用吗?或者你有没有建议如何以不同的方式达到预期的效果?清理浏览器缓存或更改浏览器没有任何效果。

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

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

谢谢大家的帮助。

样式表不是在任何其他HTML之前吗。您正在读取CSS文件,并在输出DOCTYPE等之前将其输出到浏览器。请查看您在ELSE中的输出位置??如果您获得
CSS
扩展名,您不输出任何HTML,因此页面上没有可查看的内容。您可能需要发送正确的标题,例如内容类型
header('Content-type: text/css');