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

Apache игнорирует расширение и выполняет другие файлы через fastcgi

У меня проблема с настройкой apache для запуска только файлов с .php расширение через FastCGI. Пример конфигурации VirtualHost:

<VirtualHost 192.168.0.185:80>
    ServerName host1.example.com
    DocumentRoot /home/www/host1.example.com/WWW/

    SuexecUserGroup host1 www

    <Directory "/home/www/host1.example.com/WWW/">
        AllowOverride All
        Options +ExecCGI
        AddHandler fcgid-script .php
        FcgidWrapper /home/www/host1.example.com/fcgi/php5.fcgi
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Проблема в том, что он также запускает такие файлы, как whats.new.in.php.6.html (в основном каждый файл, содержащий .php за которым следует точка) как fastcgi вместо того, чтобы обслуживать его как статический контент. Я пробовал менять AddHandler к

AddHandler fcgid-script .php$

Не повезло - файлы php не интерпретировались и обслуживались как обычный текст.

Есть ли способ предотвратить это?

Хорошо, мне удалось это решить. Вместо того AddHandler я использовал AddType с именем обработчика:

AddType fcgid-script .php

И теперь работает только для *.php файлы.

Одна из идей - убрать знак доллара. В AddHandler option принимает расширение, а не регулярное выражение или глобус. Таким образом, правильная строка будет в вашем оригинале

# With or without the leading dot, mod_mime doesn't care
AddHandler fcgid-script .php

Что касается того, почему он отмечает html-файлы как исполняемые, я понятия не имею - где-то может быть флаг, устанавливающий его, возможно, в конфигурации по умолчанию. Однако в качестве обходного пути вы можете УДАЛИТЬ обработчик для файлов .html, используя следующее, чтобы они обрабатывались как обычные файлы text / html.

RemoveHandler .html