Я веб-хостер и владелец сайта.
Как хостер я не хочу отключать использование некоторых директив модулей в .htaccess для сайтов моих клиентов.
Поскольку некоторые сайты служат CDN, я хочу отключить, например, AddHandler (и еще несколько) из mod_mime. Так что даже если файлы php загружены, они не могут выполняться.
Хотя такие директивы, как RewriteRule из mod_rewrite, по-прежнему хорошо иметь.
Чтобы объяснить это в псевдокоде:
AllowOverride All -mod_mime -DocumentRoot -CustomLog -ErrorLog
Документ https://httpd.apache.org/docs/2.2/mod/mod_mime.html#AddHandler говорит, что контекст - это .htaccess, могу ли я ограничить контекст этой директивы модуля? Я не боюсь патчить или перекомпилировать.
Как мне это решить? Спасибо!
Ответ был буквально у меня под носом.
Однако вам понадобится Apache 2.4
https://httpd.apache.org/docs/current/mod/core.html#allowoverridelist
Устанавливать
<Directory /var/www/vhosts>
AllowOverride None
AllowOverrideList RewriteEngine RewriteOptions RewriteBase RewriteCond RewriteRule
Require all granted
</Directory>
Разрешит только те директивы, которые указаны в AllowOverrideList. Все остальные вызовут внутреннюю ошибку сервера.
Однако сделать то же самое для целых модулей все еще не удается, но для меня это достаточно хорошее решение.
Еще раз спасибо SF
DocumentRoot
, CustomLog
и ErrorLog
уже недоступны в .htaccess, так что это не проблема.
Насколько я знаю, нет возможности специально отключить mod_mime полностью. Вам придется отключить все FileInfo, что может быть не тем, что вам нужно.
<Directory /var/www/vhosts>
AllowOverride All -FileInfo
RemoveHandler .php
</Directory>