Я создал плагин Wordpress, который стал популярным, но я получаю много жалоб, что он не работает. После входа на многие пользовательские веб-сайты WP (после запроса пароля администратора) я заметил, что последняя проблема, которую я не могу легко решить, - это mod_security и mod_security2, блокирующие некоторые запросы AJAX или .htaccess, что вызывает ошибку 500 в некоторых конфигурациях.
Итак, прежде всего, почему этот фрагмент кода заставляет некоторые серверы возвращать ошибку 500?
<IfModule mod_security2.c>
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 950907
SecRuleRemoveById 950005
SecRuleRemoveById 950006
SecRuleRemoveById 960008
SecRuleRemoveById 960011
SecRuleRemoveById 960904
SecRuleRemoveById phpids-17
SecRuleRemoveById phpids-20
SecRuleRemoveById phpids-21
SecRuleRemoveById phpids-30
SecRuleRemoveById phpids-61
на других серверах удаление правил по идентификатору таким образом вызывает ошибку 500:
<IfModule mod_security.c>
SecRuleRemoveById 300015
...
SecRuleRemoveById phpids-61
</IfModule>
так что на данный момент единственная рабочая вещь, которая не вызывает сбоев сервера, - это
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
но этого недостаточно для серверов с mod_security2!
Как написать кросс-серверный файл .htaccess и какие условия IF я должен добавить, чтобы отключить mod_security и mod_security2 в любом месте, где он применяется, и не вызывать 500 ошибок в других конфигурациях?
Изменить: не только в Apache. Везде, где используется .htaccess.