IE9 Acceptheader прерывается, когда CSS переписывается в файл PHP - PullRequest
2 голосов
/ 14 июня 2011

Мое приложение полностью полагается на перезапись изображения mod_rewrite / JS / CSS в документы PHP с именем файла в одном из аргументов.

например: / Счет / AccountName / путь / к / файлу переписывает в: /account/accountname.php?fileName=/path/to/file

php ответит с правильным mimetype и файлом.

Чтобы опередить очевидный вопрос: почему бы вам не переписать файл напрямую: Невозможно сделать, файл PHP отвечает с другим содержанием файла для каждой учетной записи (управление версиями), и единственное место, где известна версия dir, находится в самом файле PHP.

Теперь это работает во всех браузерах, кроме IE9. Они, очевидно, отправляют заголовок запроса, содержащий заголовок accept, который соответствует только text / css (где FF4 по-прежнему соответствует text / css, / ). Кажется, хорошо, за исключением того, что apache отказывается анализировать документ PHP до того, как получит заголовок mime. Я просто не могу понять, как заставить apache анализировать CSS-файл и отвечать только на acceptheader ПОСЛЕ синтаксического анализа файла (или не совсем, со мной все в порядке)

Надеюсь, у кого-то есть ответ .. Поможет очень Заранее спасибо!

Тим

Ответы [ 2 ]

0 голосов
/ 17 марта 2013

У меня была такая же проблема с моим движком Serendipity Blog. IE10 не принимал CSS-файл, созданный из PHP из-за правила перезаписи. Добавление [..., T = text / css] к правилу перезаписи в .htaccess решило проблему для меня.

RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA,T=text/css]
0 голосов
/ 31 июля 2011

Мод, который вы хотите, называется 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.Нет суеты, нет суеты!

...