问题描述
||
我的应用程序完全依赖于mod_rewrite将图像/ JS / CSS url重写为PHP文档,其中一个参数中包含文件名。
例如:
/帐户/帐户名称/路径/到/文件
重写为:/account/accountname.PHP?fileName=/path/to/file
PHP将以正确的mimetype和文件响应。
要解决一个明显的问题:为什么不直接将其重写为文件:
无法完成,PHP文件使用每个帐户(版本)使用不同的文件内容进行响应,并且唯一已知\ version dir \的位置是在PHP文件本身中。
现在,此功能适用于除IE9之外的所有浏览器。他们显然发送了一个请求标头,其中包含一个仅与text / css匹配的accept-header(其中FF4仍与text / css,/匹配)。看起来很好,除了apache拒绝在收到mime-header之前解析PHP文档。我只是不知道如何使apache解析CSS文件,并且仅在解析文件后才响应acceptheader(或者根本不行,对我来说还好)
希望有人能给出答案。将对您有所帮助
提前致谢!
提姆
解决方法
您想要的mod称为X-SendFile。当从PHP文件中使用该文件时,它允许Apache引擎像直接请求该文件一样提供最终文件:
您只需要在主机上下载并启用mod_xsendfile。
文章:http://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/
例:
// Look up ABSOLUTE PATH to file,etc
$file_path = ...
header(\"X-Sendfile: $file_path\");
exit();
这将告诉Apache直接在$ file_path下提供文件。不要糊涂,不要大惊小怪!
, 我的Serendipity Blog引擎遇到了同样的问题。由于重写规则,IE10不接受从PHP创建的CSS文件。将[...,T = text / css]添加到.htaccess中的重写规则为我解决了问题。
RewriteRule ^(serendipity\\.css|serendipity_admin\\.css) index.php?url=/$1 [L,QSA,T=text/css]