Заголовок, отправленный для статических файлов без расширения

#php #caching

#php #кэширование

Вопрос:

Я планирую настроить что-то похожее на следующее: https://wordpress.stackexchange.com/questions/6109/how-can-i-lock-down-an-old-wordpress-install-i-dont-intend-to-update

В основном папки и файлы генерируются как кэш для сайта php.

Какая информация заголовка отправляется для файлов без расширения? Информация заголовка хранится в текстовом файле, например, дата изменения или что-то еще?
Я хотел бы прекратить использовать расширения для всего содержимого сайта. Например:

 /about - html page
/js - my sites javascript with appropriate header info
/logo - my sites logo
etc.
  

Есть ли какие-либо недостатки или последствия при настройке файлов без расширения.
Что, если я настрою систему кэширования?

Комментарии:

1. var_dump ваша переменная $_SERVER, и вы получите свою информацию

2. @Ibrahim Diallo = Я почти уверен, что это не улавливает то, что сервер отправляет клиенту…

Ответ №1:

Существует несколько вариантов установки заголовков для статических файлов, если у них нет расширения. Для целого каталога проще всего использовать DefaulType в .htaccess :

  # js/ directory
 DefaultType application/javascript
  

Иногда также полезен sibling ForceType :

  <Files about>
     ForceType text/html
 </Files>
  

Но вы также можете задать заголовки для отдельных файлов, используя, например, RewriteRule :

  RewriteRule logo - [T=image/jpeg]
  

И еще один вариант — использовать mod_meta . Это позволяет сопровождать каждый статический файл файлом .meta, который определяет отправленный тип MIME.

Комментарии:

1. mode_meta кажется идеальным, как бы мне создать мета-файл из php-скрипта? Я могу сохранить содержимое с помощью ob_start() , но я не уверен, как сгенерировать мета-файл.

2. Просто создайте дополнительный файл, содержащий только заголовок MIME: file_put_contents("$fn.meta", "Content-Type: text/html"); — Модуль на самом деле называется mod_cern_meta для Apache httpd.apache.org/docs/2.0/mod/mod_cern_meta.html — и позаботьтесь о настройке MetaDir . и MetaSuffix .meta , чтобы это работало так легко.

Ответ №2:

  1. Заголовки прикрепляются веб-сервером
  2. Отправьте статический файл, и вы сможете увидеть с помощью Firebug или аналогичного инструмента, какие заголовки отправляются
  3. Чтобы переопределить заголовок, который был прикреплен сервером, вы можете использовать header функцию PHP. Используйте то же имя заголовка, что и то, которое вы хотите переопределить. Например, если вы хотите переопределить отменить Content-Length заголовок, который вы бы сделали header('Content-Length: ') (Хотя для этого конкретного заголовка нет смысла отменять его).
  4. Чтобы прикрепить заголовки к статическим файлам, вам нужно будет сделать это (в Apache) в .htacces или главном файле конфигурации Apache.

Комментарии:

1. В php вы отправляете заголовки следующим образом header('...') . Не переопределяют ли эти заголовки то, что веб-сервер отправляет по умолчанию?

2. @Lime — да, это именно тот способ переопределить заголовки, выданные сервером.

3. Итак, будут ли эти заголовки переопределения php связаны с файлом, если я создам статическую кэшированную версию? Заголовки связываются с файлом, например, изменяют дату и время?

4. @lime — под статическими файлами, я полагаю, вы имеете в виду HTML. У вас нет способа прикреплять заголовки к HTML-файлам — внутри файлов. Для этого вам нужно будет настроить сам сервер.