Разрешить PHP читать файлы .css и .js, сохраняя их оригинальный Content-Type - PullRequest
8 голосов
/ 23 июня 2010

Я бы хотел настроить apache php5 таким образом, чтобы файлы

  1. .css и .js были проверены php
  2. , их тип содержимого останется по умолчанию (то естьсоответственно "text / css" и "application / x-javascript")

Мне это нужно, потому что файлы CSS и JS используют глобальные переменные PHP.Это позволяет мне из одного PHP-файла динамически управлять как CSS, так и JS-кодом (затем проект экспортируется, чтобы файлы css и js содержали реальные значения, а не эхо PHP).

То, как ясейчас я добавил расширение .css и .js к apache php5.conf:

AddType application/x-httpd-php .php .phtml .php3 .css .js

Я также использую заголовок ('Content-Type: [...]') поверх каждого CSSФайл / js для изменения значения заголовка Content-Type обратно на оригинал.Это не идеально, так как мне нужно вручную добавить эту строку в каждый файл css / js, чтобы заголовок Content-type был подходящим, даже если я не использую глобальные переменные PHP.

Так или иначеЯ могу заставить PHP проверять файлы css / js, сохраняя при этом их оригинальный Content-Type, без необходимости изменять сами файлы css / js?

Ответы [ 2 ]

7 голосов
/ 23 июня 2010

Я не пробовал это, но из документов это выглядит возможным:

<Files *.css>
    php_value  default_mimetype "text/css"
</Files>
<Files *.js>
    php_value  default_mimetype "application/x-javascript"
</Files>
# ... and so on for other types
2 голосов
/ 23 июня 2010

Если бы мне абсолютно необходимо было это сделать, я бы сделал специальный вид для файлов CSS и JavaScript. Например, я бы сказал моему приложению обработать все запросы, скажем, к /pseudostatic/css/somefilename.js определенным контроллером, который будет брать шаблон на основе имени запрашиваемого файла, добавлять к нему все необходимые глобальные переменные и обрабатывать его необходимый заголовок.

И я бы использовал кэширование на основе метки времени файла.

Но я думаю, что это действительно ненужная боль. Могу поспорить, что вы можете найти способ обойти, например, хранить большую часть CSS и Javascript в статических файлах и загружать только крошечные кусочки серверных скриптов и стилей непосредственно внутри запрашиваемой страницы. Таким образом вы сэкономите своему серверу много времени на обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...