Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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
当CSS被重写为PHP文件时,IE9 Acceptheader中断_Css_Apache2_Http Headers_Internet Explorer 9 - Fatal编程技术网

当CSS被重写为PHP文件时,IE9 Acceptheader中断

当CSS被重写为PHP文件时,IE9 Acceptheader中断,css,apache2,http-headers,internet-explorer-9,Css,Apache2,Http Headers,Internet Explorer 9,我的应用程序完全依赖mod_rewrite将image/JS/CSS URL重写为PHP文档,其中一个参数中包含文件名 例如: /帐户/帐户名/路径/到/文件 重写为:/account/accountname.php?文件名=/path/to/file php将使用正确的mimetype和文件进行响应 提前回答一个明显的问题:为什么不直接重写到文件中: 无法完成,PHP文件会根据每个帐户使用不同的filecontents(版本控制)进行响应,而“version dir”唯一已知的位置是PHPfi

我的应用程序完全依赖mod_rewrite将image/JS/CSS URL重写为PHP文档,其中一个参数中包含文件名

例如: /帐户/帐户名/路径/到/文件 重写为:/account/accountname.php?文件名=/path/to/file

php将使用正确的mimetype和文件进行响应

提前回答一个明显的问题:为什么不直接重写到文件中: 无法完成,PHP文件会根据每个帐户使用不同的filecontents(版本控制)进行响应,而“version dir”唯一已知的位置是PHPfile本身

现在,除了IE9之外,这在所有浏览器中都有效。他们显然发送了一个requestheader,其中包含一个只匹配text/css的accept头(其中FF4仍然匹配text/css,/)。看起来不错,只是apache在收到mime头之前拒绝解析PHP文档。我只是不知道如何让apache解析CSS文件,而只在解析文件后才响应acceptheader(或者根本不响应,对我来说很好)

希望有人能找到答案。。会有很大帮助的 提前谢谢


Tim

您想要的mod称为X-SendFile。从PHP文件中使用时,它允许Apache引擎提供最终文件,就像直接请求一样:

您只需在主机上下载并启用modxsendfile即可

一篇文章:

例如:

// Look up ABSOLUTE PATH to file, etc
$file_path = ...
header("X-Sendfile: $file_path");
exit();

这将告诉Apache直接在$file\u路径下提供文件。没有混乱,没有大惊小怪

您想要的mod称为X-SendFile。从PHP文件中使用时,它允许Apache引擎提供最终文件,就像直接请求一样:

您只需在主机上下载并启用modxsendfile即可

一篇文章:

例如:

// Look up ABSOLUTE PATH to file, etc
$file_path = ...
header("X-Sendfile: $file_path");
exit();

这将告诉Apache直接在$file\u路径下提供文件。没有混乱,没有大惊小怪

我的“意外发现”博客引擎也有同样的问题。由于重写规则,IE10不接受从PHP创建的CSS文件。将[…,T=text/css]添加到.htaccess中的重写规则为我解决了这个问题

RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA,T=text/css]

我的“意外发现”博客引擎也有同样的问题。由于重写规则,IE10不接受从PHP创建的CSS文件。将[…,T=text/css]添加到.htaccess中的重写规则为我解决了这个问题

RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA,T=text/css]

您提到的“明显的问题”是:当涉及到CSS和JS文件时,最好让站点的静态元素由静态文件而不是通过PHP提供服务,因为通过PHP运行所有内容都会带来服务器开销。它还消除了缓存的任何可能性,这会对站点性能产生更大的影响。您应该分离CSS和JS的静态部分,并将它们作为普通文件使用。非动态方面仍然可以通过PHP单独运行,但您可能希望将动态CSS内容保持在最低限度。您提到的“明显的问题”是:当涉及到CSS和JS文件时,从静态文件而不是通过PHP提供站点的静态元素是很好的,因为通过PHP运行所有内容都会带来服务器开销。它还消除了缓存的任何可能性,这会对站点性能产生更大的影响。您应该分离CSS和JS的静态部分,并将它们作为普通文件使用。非动态方面仍然可以通过PHP单独运行,但您可能希望将动态CSS内容保持在最低限度。