Skip to content

Все для WordPress, веб-розробки — і не тільки

Аудит .htaccess: 500, мертві директиви, ознаки зламу

Аудит .htaccess: чому сайт віддає 500 і які правила не працюють

Перетягніть файл — інструмент знайде BOM, мертві директиви, правила з високим ризиком помилки 500 та ознаки стороннього втручання. Файл читається у вашому браузері й нікуди не надсилається.

Байтові перевірки — BOM, CRLF, недруковані та невидимі символи — можливі лише для файлу. Під час вставки з буфера браузер їх уже прибирає, тому найчастіша причина 500 стає невидимою.
Аналіз запускається автоматично. Файл нікуди не надсилається — його читає ваш браузер.
Контекст

Чистий .htaccess не лікує злам. Якщо сайт скомпрометовано, шкідливий код живе у PHP, а .htaccess — лише його наслідок: дропер перепише файл назад за хвилини після того, як ви його почистите. Порядок дій зворотний — спершу знайти виконуваний код, потім наводити лад у конфігу.

Файл читається у вашому браузері — його вміст нікуди не надсилається і ніде не зберігається.

Чому саме файл, а не вставлений текст

Найчастіша причина помилки 500 після редагування .htaccess узагалі не видно в тексті. Це BOM — три невидимі байти на початку файлу, які додає Блокнот Windows при збереженні в UTF-8. Apache вважає їх частиною першої директиви і не може її розібрати. Тому інструмент приймає саме файл: тільки так можна прочитати байти й побачити BOM, переноси у стилі Windows та невидимі символи всередині рядків. Друга група проблем — директиви, які нічого не роблять, але виглядають робочими. mod_gzip_on — це синтаксис Apache 1.3, на сучасних серверах він мовчки ігнорується, а люди роками вважають, що стиснення ввімкнене. Блок ExpiresByType, загорнутий у перевірку mod_headers.c замість mod_expires.c, теж не спрацює — і без підказки цього не помітити. Третє — php_value і php_flag. Вони працюють тільки коли PHP підключений як модуль Apache. На сучасних хостингах з PHP-FPM такий рядок або ігнорується, або одразу дає 500. І окремо про безпеку: якщо у файлі знайдено правила, що редиректять відвідувачів залежно від того, з якого пошуковика вони прийшли, або приховують редирект від адміністратора — це типова ознака компрометації. Але чистий .htaccess не лікує злам: майже завжди десь у файлах живе PHP-скрипт, який перепише його назад.

Часті питання