Назад | Перейти на главную страницу

Могу ли я использовать регулярное выражение или подстановочный знак для установки директивы Apache AddType?

Я управляю внутренней системой Apache2, обеспечивающей просмотр и загрузку подключенной файловой системы по протоколу HTTP. Я не могу контролировать файлы, типы файлов или имена файлов содержимого, загружаемого командой.

Все, что можно отобразить в браузере, я делаю. Текст, изображения, xml и т. Д. Работают нормально, потому что я назначаю явный тип MIME в директиве httpd.conf AddType. Но часть контента создается программно и не имеет расширения, которое я могу предсказать, например: file.name.text_1234. Эти файлы всегда являются текстовыми / простыми, но я не могу назначить этот тип контента, не добавляя 10 тыс. Записей AddType .text_NNNN в http.conf или /etc/mime.types. И даже если бы я это сделал, я все равно могу позже встретить расширения, такие как .text_123456789 или .text_abc123def456 и т.д., и т.д., поэтому явные записи нецелесообразны.

Есть ли способ назначить AddType с помощью подстановочного знака или регулярного выражения или даже заставить что-либо, иначе не заданное как тип контента text / plain?

Я пробовал использовать связанные директивы, такие как DefaultType, ForceType, FilesMatch, Files и Location, чтобы либо глобально переопределить, либо сопоставить какое-либо условие, которое будет назначать этот тип, но ничего не сработало. Как только добавлю:

AddType text/plain .blabla_123456

..тогда some.file.name.blabla_123456 отлично отображается после перезапуска Apache.

Я думаю модуль mod_mime_magic может быть то, что вы ищете. Он просмотрит содержимое файла и угадает, какой у него должен быть тип MIME. Это должно быть правильно почти для всех текстовых файлов.

Два способа получить поддержку регулярных выражений - вы можете использовать ForceType в LocationMatch или вы можете использовать флаг T = в mod_rewrite.