ForceType / htaccess расширение файла вопрос - файлы без расширения? - PullRequest
7 голосов
/ 19 января 2011

Это мой файл .htaccess:

<IfModule php4/5.c>
php_admin_flag Option
php_flag Option
php_admin_value Option
php_value Option
</IfModule>  
<Files .>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>

Приведенный выше код почему-то работает, но я не уверен, почему, хотя ... Я ожидал ошибку 500.Я в порядке .htaccess, но в основном для таких вещей, как блокировка роботов / пауков и т. Д., А не для типов файлов.Верхняя часть файла предназначена для пользовательских файлов php.ini (я пытался реплицировать на своем собственном сервере Apache, как будто у меня не было доступа к нужному файлу php.ini, как они делают на сайтах веб-хостинговых компаний, только длядобавил реализм на моих сайтах тестирования).

Хотя я понимаю, как использовать ForceType и SetHandler, я не уверен, как использовать его для файлов без расширений (например, если у меня был файл с именем test1, я мог бы его запуститькак php).

Раньше я делал это так:

<Files testing1>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>

, но делать это было утомительно для каждого отдельного файла без расширений.

По сути, яПопытка сделать это, чтобы убедиться, что у меня есть файлы без расширения через директивы ForceType / SetHandler, но возможно ли это?(и символ выше в моем первом примере подстановочный знак, или нет?)

Спасибо

Ответы [ 5 ]

11 голосов
/ 01 августа 2013

DefaultType был удален в Apache 2.4. Ваш лучший вариант следующий:

<Files *>
    ForceType application/x-httpd-php
</Files>
<Files *\.*>
    ForceType None
</Files>

Это будет перехватывать все файлы без расширения и обрабатывать их как PHP. Тогда все файлы с расширением будут обработаны как обычно.

Использование mod_mime_magic не является хорошим выбором, так как каждый файл необходимо проверять каждый раз. См. mod_mime_magic документы для получения дополнительной информации.

4 голосов
/ 25 мая 2012

Для Apache 2.3 и старше , просто измените DefaultType следующим образом:

DefaultType text/html

Таким образом, каждый нераспознанный файл (включая файлы без расширения) будет обрабатываться как HTML.


Для Apache 2.4 и выше см. Ответ Тигра .

2 голосов
/ 30 мая 2016

Только файлы без расширений

Это решение касается только статически обслуживаемых файлов без расширений: (кредит Евгений Кернер )

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

Любой неизвестный контент

Этот параметр влияет на любой ответ, который в противном случае передавался бы без заголовка Content-Type.Другими словами, он имитирует поведение старой директивы DefaultType:

Header set Content-Type "application/x-httpd-php" "expr=-z %{CONTENT_TYPE}"

Здесь должно быть возможно использовать setifempty вместо выражения -z.Но он терпит неудачу и перезаписывает заголовок в каждом ответе, пустой или нет.Я не знаю почему. Эрик Ковенер говорит, что это потому, что заголовок Content-Type не добавляется «до самой последней секунды».

Только для старых серверов

Это произойдет сбой после обновления до 2.4: (см. руководство )

DefaultType application/x-httpd-php
0 голосов
/ 09 июня 2016

Я потратил целую вечность, пытаясь решить аналогичную проблему, когда ForceType и DefaultType не работали на некоторых страницах.

Я нашел тот же ответ, что и kbk.Отредактируйте /etc/httpd/conf/httpd.conf и прокомментируйте строки для модуля Mime Magic:

<IfModule mod_mime_magic.c>
#   MIMEMagicFile /usr/share/magic.mime
#    MIMEMagicFile conf/magic
</IfModule>

После этого перезапустите Apache.

Вы можете найти больше информации здесь:1008 *http://realtechtalk.com/HTML_files_in_Apache_still_displaying_as_raw_text_even_with_DefaultType_ForceType_etc-1752-articles

0 голосов
/ 21 февраля 2012

(1) Измените .htaccess или apache2.conf или httpd.conf

Источник:

Добавить: Приложение DefaultType / октет-поток

Удалить, если присутствует: DefaultType text / plain

Перезапустить apache

(2) Включить mime_magic

Источники:

Включить mime_magic $ sudo a2enmod -> mime_magic

$ sudo /etc/init.d/apache2 restart

Отключить модуль:

$ sudo a2dismod
-> mime_magic
$ sudo /etc/init.d/apache2 restart
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...