Безпека

Як заблокувати доступ до WordPress сайту з певних країн через .htaccess (Гео-блокування)

  • 10 хвилини на читання
  • Команда Hostragons
Як заблокувати доступ до WordPress сайту з певних країн через .htaccess (Гео-блокування)

Блокування доступу до WordPress сайту з певних країн через файл .htaccess, відоме як гео-блокування, — це відмова у доступі на рівні сервера для трафіку, що надходить з обраних країн. Зазвичай для цього використовують правила .htaccess на серверах Apache або LiteSpeed, бази даних GeoIP/MaxMind, списки IP-блоків або CDN/WAF сервіси. Важливо розуміти: сам по собі файл .htaccess не визначає країну відвідувача; для гео-блокування сервер повинен надавати інформацію про країну у вигляді змінної або ж у правила треба додати діапазони IP-адрес відповідних країн.

У цій статті ми розглянемо, як працює блокування доступу за країною через .htaccess у WordPress, коли це має сенс, наведемо приклади правил, поради з безпечного застосування та типові помилки. Мета — не просто дати код, а запропонувати практичний процес, який допоможе уникнути помилок, помилкових блокувань Googlebot, втрати SEO чи збоїв у роботі платежів і інтеграцій. Якщо ваш WordPress розміщений на Hostragons, перед внесенням змін рекомендуємо зробити резервну копію файлів через панель хостингу та впроваджувати правила поетапно WordPress хостинг.

Що таке гео-блокування і навіщо воно потрібне на WordPress сайтах?

Гео-блокування — це метод обмеження доступу на основі географічного розташування користувача, яке зазвичай визначається за IP-адресою. Наприклад, інтернет-магазин, що працює лише на ринок України, може обмежити доступ з інших країн через велику кількість фейкових реєстрацій, спаму або атак грубої сили.

Для WordPress це може бути корисним у таких випадках:

  • Зменшення кількості зловмисних спроб входу в адмінпанель.
  • Боротьба зі спам-коментарями, ботами та фейковими формами.
  • Обмеження доступу через ліцензійні, авторські або юридичні вимоги.
  • Захист серверних ресурсів від трафіку з країн поза цільовим ринком.
  • Зменшення непотрібних запитів із країн, де не надаються послуги або доставка.

Втім, гео-блокування не замінює повноцінний захист. IP-адреси можуть помилково визначатися, доступ можна обходити через VPN або проксі, а легітимні користувачі іноді можуть бути заблоковані помилково. Тому рекомендується поєднувати це з надійними паролями, двофакторною аутентифікацією, актуальною версією WordPress, безпечними плагінами, SSL-сертифікатом та регулярними бекапами сертифікат SSL.

Як .htaccess використовує інформацію про країну?

.htaccess — це потужний конфігураційний файл для серверів на базі Apache та LiteSpeed, що дозволяє керувати правилами на рівні директорій. Через нього можна налаштовувати постійні посилання, редиректи, кешування, доступ до файлів і деякі обмеження безпеки. Однак сам по собі .htaccess не визначає, з якої країни IP-адреса.

Існує три основні підходи для гео-блокування через .htaccess:

  • Використання змінної країни, що генерується на сервері через GeoIP або MaxMind модуль.
  • Додавання IP-діапазонів певних країн безпосередньо у .htaccess.
  • Використання CDN/WAF або плагінів безпеки для блокування за країною з додатковою підтримкою через .htaccess.

Станом на 2026 рік найбільш надійним і масштабованим є використання CDN/WAF або серверних рішень на базі MaxMind, оскільки IP-діапазони країн часто змінюються, і довгі списки IP у .htaccess можуть негативно впливати на продуктивність. Проте для невеликих і контрольованих випадків .htaccess залишається зручним інструментом.

Що потрібно зробити перед початком?

Неправильне редагування .htaccess може повністю заблокувати сайт. Найпоширеніші проблеми — помилки 500 Internal Server Error, цикли редиректів, неможливість зайти в адмінпанель і несподівані 403 Forbidden. Тому перед внесенням змін виконайте наступне:

  • Завантажте поточний .htaccess файл на комп’ютер і створіть резервну копію з датою.
  • Зробіть повний бекап файлів WordPress і бази даних Резервне копіювання веб-сайту.
  • Перевірте, що у вас є доступ до файлового менеджера або FTP через панель хостингу.
  • Впроваджуйте правила по одному, не додавайте одразу багато IP чи країн.
  • Переконайтеся, що Googlebot, платіжні системи, служби доставки, API і CDN IP-адреси не блокуються.
  • Після змін тестуйте доступ з різних мереж — одного браузера замало.

Найчастіша помилка — розміщення правил у неправильному місці. WordPress має власні правила перепису URL, які знаходяться між рядками BEGIN WordPress і END WordPress. Безпечно додавати власні правила вище цього блоку, бо WordPress може перезаписати свій блок.

Метод 1: Блокування через GeoIP або MaxMind змінну в .htaccess

Якщо сервер надає змінну з кодом країни, можна у .htaccess додати правила, які блокують доступ за цією змінною. Раніше використовувалися mod_geoip, сучасні рішення — MaxMind GeoLite2 і mod_maxminddb. Назви змінних залежать від конфігурації, найпоширеніші: GEOIP_COUNTRY_CODE, MM_COUNTRY_CODE або GEOIP_COUNTRY_CODE_V6.

Приклад логіки

Нижче наведено приклад, де блокуються країни з кодами RU, CN і KP, якщо на сервері доступна змінна GEOIP_COUNTRY_CODE. Перед використанням перевірте, які змінні підтримує ваш хостинг.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(RU|CN|KP)$
RewriteRule ^ - [F,L]
</IfModule>

У цьому випадку запити з Росії (RU), Китаю (CN) та Північної Кореї (KP) отримають помилку 403 Forbidden. Використовуйте міжнародні ISO 3166-1 alpha-2 коди: Україна — UA, Німеччина — DE, США — US. Коди перераховуйте через вертикальну риску.

Блокування лише wp-login.php за країною

Замість повного блокування сайту можна обмежити лише сторінку входу до WordPress. Це збалансує безпеку і доступність. Наприклад, сайт буде доступний усім, а сторінка входу — лише з певних країн.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-login\.php$ [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(RU|CN)$
RewriteRule ^ - [F,L]
</IfModule>

Цей метод знижує навантаження і захищає найуразливіші точки, особливо враховуючи, що більшість атак спрямовані на wp-login.php та xmlrpc.php.

Метод 2: Блокування IP-діапазонів країн через .htaccess

Якщо сервер не підтримує GeoIP змінні, можна додавати у .htaccess списки IP-адрес відповідних країн. Але цей спосіб складний у підтримці: великі країни мають тисячі CIDR-блоків, які треба регулярно оновлювати, що може погіршувати продуктивність.

У Apache 2.4+ можна використовувати конструкцію Require not ip:

<RequireAll>
Require all granted
Require not ip 203.0.113.0/24
Require not ip 198.51.100.0/24
</RequireAll>

Це приклад, IP-адреси умовні. Для реального використання беріть актуальні CIDR зі надійних джерел. Якщо списки великі (500+ рядків), краще перенести блокування на рівень мережевого екрану сервера, WAF чи CDN.

Метод 3: Гео-блокування через CDN або WAF із підтримкою .htaccess

Наймасштабованішим способом у сучасних WordPress-сайтах є використання CDN або WAF для гео-блокування. Сервіси на кшталт Cloudflare, Sucuri, LiteSpeed Web ADC, Imunify360 дозволяють швидко і централізовано керувати правилами, блокуючи трафік до того, як він дійде до вашого сервера. Це знижує навантаження на CPU, RAM і PHP.

Файл .htaccess у такій схемі також залишається корисним, наприклад, для коректного розпізнавання реальної IP-адреси з CDN, додаткових обмежень до окремих файлів або URL входу. Але основне навантаження гео-блокування варто делегувати CDN.

Порівняння методів

Порівняння методів
МетодПеревагиНедолікиКому підходить?
GeoIP змінна в .htaccessШвидке блокування на рівні сервера; не залежить від плагінів.Потрібна підтримка GeoIP/MaxMind на сервері; назви змінних можуть відрізнятися.Технічно підковані користувачі на Apache/LiteSpeed.
IP-діапазони в .htaccessПрацює без додаткових модулів; простий для невеликих списків.Великий список гальмує сервер; складно оновлювати.Ті, хто хоче заблокувати кілька IP-блоків.
CDN/WAF гео-блокуванняБлокує ще до сервера; легке управління; звіти.Потрібна додаткова настройка; можливі помилкові блокування.Великі сайти з високим трафіком і пріоритетом безпеки.
Плагіни безпеки WordPressЗручно керувати з панелі; не потрібні знання коду.Працює після завантаження PHP; навантаження на сервер.Малі та середні сайти без технічної підтримки.

Крок за кроком: Безпечне впровадження гео-блокування через .htaccess

Крок за кроком: Безпечне впровадження гео-блокування через .htaccess

1. Визначте, що блокуватимете

Розберіться, чи хочете ви заблокувати весь сайт, лише wp-login.php або окремі кінцеві точки (наприклад, xmlrpc.php). Повне блокування країни може зашкодити SEO та користувачам, тож частіше краще обмежувати лише адмінчастину.

2. Проаналізуйте трафік

Перед прийняттям рішення вивчіть логи доступу, записи плагінів безпеки і статистику аналітики за 7-14 днів. Якщо, наприклад, країна дає 3% трафіку, але 60% атак — обмеження має сенс. Якщо ж там 12% реальних продажів — ризик втрати доходу великий.

3. Перевірте підтримку сервера

Дізнайтеся, чи ваш сервер працює на Apache, LiteSpeed чи Nginx. .htaccess підтримується лише Apache і LiteSpeed. На Nginx треба налаштовувати еквівалентні правила безпосередньо в конфігурації. Вибираючи хостинг на Hostragons, звертайте увагу на сумісність з WordPress, резервне копіювання, SSL і безпеку Веб-хостинг.

4. Впровадьте тестове правило

Почніть з одного IP або однієї країни. Додайте правило вище блоку WordPress у .htaccess. Після збереження перевірте головну сторінку, адмінпанель, сторінки товарів, надсилання форм і оплату.

5. Моніторьте логи

Слідкуйте за кількістю 403 помилок і джерелами запитів. Якщо їх багато, можливо правило занадто жорстке. Особливо, якщо ви використовуєте CDN, сервер може бачити IP CDN, а не реальний IP користувача, що спотворює визначення країни.

6. Документуйте правила

Додавайте коментарі в .htaccess: яку країну блокуєте, коли правило додано і хто його затвердив. Це допоможе у подальшому обслуговуванні. Приклад: # 2026-02-15: обмеження доступу до wp-login.php для RU і CN через атаки.

Що треба враховувати з погляду SEO?

Гео-блокування може впливати на SEO. Googlebot зазвичай сканує сайт з IP США. Якщо заблокувати США повністю, Google не зможе індексувати сторінки, що призведе до падіння позицій і помилок у Search Console.

Рекомендації:

  • Не блокувати боти Googlebot, Bingbot та інші пошукові системи.
  • Якщо сайт мультимовний, перевірте правила hreflang, canonical і перенаправлення.
  • Показуйте корисні повідомлення на сторінках 403, а не порожні екрани.
  • Моніторте звіти Search Console про покриття, статистику сканування і досвід користувача.
  • Не використовуйте гео-блокування для SEO-маніпуляцій, це вважається клоакингом і шкідливо.

Особливо уважно треба ставитись до гео-блокування блогів з міжнародною аудиторією, SaaS, туристичних сайтів та експортерів. Якщо ваша мета — лише зменшити спам, краще використовувати reCAPTCHA, обмеження швидкості, плагіни безпеки або WAF.

Чи достатньо гео-блокування для безпеки?

Ні, гео-блокування лише зменшує площу атаки, але не зупиняє зловмисників повністю. VPN, проксі, ботнети і хмарні сервери можуть обходити обмеження. Для надійного захисту використовуйте багатошаровий підхід:

  • Регулярно оновлюйте ядро WordPress, теми і плагіни.
  • Використовуйте унікальні логіни і складні паролі для адміністраторів.
  • Увімкніть двофакторну аутентифікацію.
  • Обмежте кількість спроб входу для wp-login.php і xmlrpc.php.
  • Видаляйте непотрібні плагіни і використовуйте лише надійні теми.
  • Забезпечте сайт SSL сертифікатом і працюйте через HTTPS сертифікат SSL.
  • Робіть регулярні резервні копії і план відновлення.

Важливим є також якісний хостинг із ізоляцією ресурсів, актуальною версією PHP, скануванням на віруси, автоматичними бекапами і оперативною підтримкою Безпечний хостинг для WordPress.

Типові помилки та як їх уникнути

Помилка 1: Додавання дуже великого списку IP у .htaccess

Велика кількість правил уповільнює обробку кожного запиту. Краще використовувати CDN/WAF або серверний firewall для масштабних списків.

Помилка 2: Блокування Googlebot та інтеграційних служб

Платіжні системи, API, служби доставки і пошукові роботи можуть надсилати запити з різних країн. Перевіряйте логи після внесення правил і додавайте винятки для критичних сервісів.

Помилка 3: Очікування роботи .htaccess на Nginx

Nginx не читає .htaccess. Для Nginx гео-блокування треба реалізовувати у конфігурації сервера, використовуючи map/geo модулі, WAF або плагіни безпеки.

Помилка 4: Зміни у файлах без резервної копії

Навіть одна неправильна буква може зупинити сайт. Завжди робіть резервну копію перед редагуванням. Якщо працюєте через файловий менеджер, скопіюйте оригінальний файл у текстовий редактор.

Помилка 5: Прийняття рішень без аналізу даних

Блокувати країну без аналізу трафіку і конверсій — ризиковано. Краще звузити обмеження лише до вразливих точок, наприклад, wp-login.php.

Альтернативи: плагіни, firewall і серверні рішення

Якщо не хочете працювати з кодом, плагіни безпеки WordPress можуть пропонувати гео-блокування. Проте вони запускаються після старту PHP, тому не завжди ефективні при високому навантаженні. Зате зручні для малих сайтів.

На серверному рівні можна налаштувати CSF, firewalld, iptables або блокування IP через панель провайдера. Ці методи працюють раніше за .htaccess, але на спільних хостингах доступ до них обмежений. У таких випадках звертайтесь до підтримки Hostragons для вибору оптимального рішення Пакети хостингу.

Контрольний список після впровадження

Після додавання правил не завершуйте роботу без перевірок:

  • Перевірте головну сторінку, категорії, записи, товари та кошик.
  • Переконайтесь, що wp-admin і wp-login.php доступні з дозволених країн.
  • Протестуйте контактні, реєстраційні форми і процес оплати.
  • Виконайте тестування URL у Google Search Console.
  • Перевірте логи сервера на наявність 500 помилок та аномальних 403.
  • Якщо використовуєте CDN — очистіть кеш і перевірте передачу реальних IP.
  • Оновіть документацію із зазначенням мети й дати правил.

Ці кроки особливо важливі для комерційних WordPress сайтів, оскільки навіть невелика помилка у гео-блокуванні може вплинути на оплату, рекламу, верифікацію email або роботу API API та інтеграції.

Поширені запитання

Чи можна заблокувати доступ з певних країн через .htaccess у WordPress?

Так, можна, але для роботи .htaccess з інформацією про країну сервер повинен підтримувати GeoIP/MaxMind змінні або в правила треба додати IP-діапазони. Сам по собі файл не визначає країну IP.

Чи шкодить гео-блокування SEO?

Якщо зроблено неправильно, так. Блокування Googlebot або CDN IP призведе до проблем з індексацією. Безпечніше обмежувати лише чутливі сторінки, наприклад wp-login.php.

Які коди країн використовувати?

Зазвичай — міжнародний стандарт ISO 3166-1 alpha-2: Україна — UA, Німеччина — DE, США — US, Франція — FR. Перевіряйте відповідність змінних у конфігурації сервера.

Чи працює .htaccess гео-блокування на Nginx?

Ні, Nginx не підтримує .htaccess. Для Nginx потрібно налаштовувати гео-блокування у конфігурації сервера або через WAF/CDN.

Чи зупинить гео-блокування зловмисників, що використовують VPN?

Повністю ні. VPN, проксі та ботнети можуть обходити обмеження. Гео-блокування — лише один з рівнів захисту, який слід поєднувати з іншими методами, як двофакторна аутентифікація і WAF.

Короткий підсумок і наступні кроки

Гео-блокування через .htaccess у WordPress може ефективно знизити спам, атаки грубої сили та зайвий трафік, за умови правильного налаштування. Найкраще спочатку проаналізувати трафік, обмежувати лише необхідні ділянки, створити резервні копії, протестувати правила і відслідковувати логи. Для великих сайтів краще використовувати CDN/WAF або серверні рішення. Якщо ви шукаєте надійну, швидку і стабільну інфраструктуру для WordPress, ознайомтеся з рішеннями Hostragons для хостингу, доменів і SSL та реалізуйте потрібну конфігурацію за спокійним планом Перевірка домену WordPress хостинг.

Поділитися цією статтею:

Команда Hostragons

Актуальні посібники від нашої команди експертів з хостингу, серверів та доменних імен. Давайте разом знайдемо правильне рішення для вашого проєкту.

Зв'яжіться з нами