Илья Филонов, давайте разберемся.
# Тут Вы говорите Apache, следующее (RewriteRule) правило при условии, если адрес не равен /maintenance.html :
RewriteCond %{REQUEST_URI} !/maintenance.html$
# Тут говорите, следующее правило при условии, если адрес не равен 171.33.255.61:
RewriteCond %{REMOTE_ADDR} !^171.33.255.61
# Тут обязываете Apache ВСЁ, что не подпадает под правила выше, переадресовать на /maintenance.html
RewriteRule $ /maintenance.html [R=302,L]
Apache-настройка переадресации в общем случае так и работает: условия, условия, правило; условия, еще условия, правило. После выполнения всех условий и правил Apache действует установленным образом для переадресации директории.
Вам нужно перенаправить все, кроме mail.php на заглушку, так?
1 вариант, это с помощью фронт-контроллера PHP, адресуя все на скрипт index.php стандартным для движка способом, в начале которого определять наличие $_POST / mail, и все, что кроме, отдавать на mainstance.html:
header('Content-Type: text/html'); die(file_get_contents(__DIR__ . '/mainstance.html')); При этом, в htaccess у вас остаются стандартные правила (WP так и так адресует на index.php).
2 вариант, это оставить Вашу версию .htaccess, но добавить правило
RewriteCond %{REMOTE_URI} !/mail.php$ (или
RewriteCond %{REQUEST_FILENAME} !mail.php, тут уж пробуйте сами в Вашем контексте)
3 вариант, найти плагин для WordPress для заглушки mainstance, поверьте, такие решения там есть, как есть плагины для оправки формы контактов.