Заставить Apache распознавать MIME-тип файлов без расширения

У меня есть несколько старых файлов HTML, которые были созданы кем-то еще в другом месте. Многие из них по какой-то причине не имеют расширения.html. Я не хочу менять их, если это возможно, но по какой-то причине Apache не может использовать магию MIME для определения типа файла. У меня включен мод mime_magic, а также следующее в разделе сайтов:

    MimeMagicFile /etc/magic

Должен отметить, что на этой машине я использую Debian Linux.

5 ответов

Я попробовал обходной путь DefaultType в моем основном файле conf, и он не работал для меня. (Моя среда - внутренняя, полностью взломанная версия Apache, поэтому может существовать директива FileInfo или что-то, переопределяющее DefaultType, и я не могу его найти. В стандартных установках это может работать...)

Что DID работает: поскольку все файлы без расширений, с которыми я имею дело, находятся в одном известном каталоге, я добавил блок Location и использовал ForceType:

<Location "/directoryname">
ForceType text/plain
</Location>

Вы не можете использовать ForceType для каталога, который должен содержать более одного типа файлов.

Предположим, что все файлы, не содержащие точку, являются PHP:

      <FilesMatch "^[^\.]+$">
              ForceType application/x-httpd-php
      </FilesMatch>

Простым решением проблемы, может быть, и не решением, было бы изменить DefaultType следующим образом:

DefaultType text / html

Это гарантирует, что каждый нераспознанный файл будет обрабатываться как HTML.

Повторяю, это неверное решение, но оно простое и может иметь смысл, если ваш сервер обслуживает в основном HTML-контент.

Волшебный путь к файлу /usr/share/file/magic в Debian. Измените оператор конфигурации на

MimeMagicFile /usr/share/file/magic

Если вы откроете /etc/magic с текстовым редактором, вы можете увидеть комментарий, объясняющий, что file(1) следует использовать этот файл только для ваших локальных магических определений.

Мне кажется, что вы используете магический файл SYSTEM, когда хотите использовать магический файл MIME - как следует из названия директивы конфигурации Apache "MimeMagicFile". Попробуй это:

MimeMagicFile /usr/share/mime/magic

Конечно, убедитесь, что это правильный путь для вашей системы - у меня нет системы Debian для тестирования, но я ожидаю, что она будет там. Пытаться locate mime/magic если вы не можете найти его в вышеуказанном месте.

Другие вопросы по тегам