未使用php readfile()加载样式表
我想将所有流量重定向到一个页面,在这个页面上,我根据用户输入的URL决定输出什么。到目前为止,它工作正常,唯一不起作用的是加载样式表。 目前,我用XAMPP在本地尝试了所有这一切 我将代码缩减到最低限度,以指出问题所在 .htaccess:未使用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
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');