Zabezpečení

Blokování přístupu z vybraných zemí ve WordPress pomocí .htaccess (Geo-Blocking)

  • 11 minut na čtení
  • Tým Hostragons
Blokování přístupu z vybraných zemí ve WordPress pomocí .htaccess (Geo-Blocking)

Blokování přístupu z určitých zemí ve WordPress prostřednictvím souboru .htaccess, známé také jako geo-blocking, znamená zamítnutí provozu ze specifikovaných zemí přímo na úrovni serveru. K tomu se běžně využívají pravidla v .htaccess na serverech Apache nebo LiteSpeed, databáze GeoIP/MaxMind, seznamy IP bloků či služby CDN/WAF. Klíčové je ale vědět, že samotný soubor .htaccess nezná zemi návštěvníka; pro blokaci podle země je potřeba, aby server předal informaci o zemi prostřednictvím proměnné, nebo aby pravidla obsahovala IP rozsahy daných zemí.

V tomto návodu si ukážeme, jak funguje blokace zemí ve WordPressu pomocí .htaccess, kdy má smysl ji použít, přidáme příklady pravidel, doporučené postupy a upozorníme na nejčastější chyby. Nejde jen o poskytnutí kódu, ale o bezpečný postup, který minimalizuje rizika jako chyby 500, ztrátu SEO, přerušení platebních bran nebo nechtěné zablokování Googlebotu. Pokud provozujete WordPress na Hostragons, doporučujeme před úpravami vytvořit zálohu souborů a změny zavádět postupně WordPress hosting.

Co je geo-blocking a proč ho používat ve WordPress?

Geo-blocking je metoda omezení přístupu na základě geografické polohy návštěvníka, která se zpravidla určuje podle IP adresy. Například e-shop prodávající jen v Česku může chtít zablokovat přístup z jiných zemí, pokud tam zaznamená zvýšený počet falešných registrací, spamových komentářů nebo pokusů o prolomení hesla.

Ve WordPressu lze geo-blocking využít například k:

  • omezení špatných pokusů o přihlášení do administrace,
  • snížení spamových komentářů, falešných registrací a falešných odeslání formulářů,
  • naplnění licenčních, autorských nebo legislativních požadavků na omezení obsahu,
  • ochraně serverových zdrojů před nežádoucím provozem z necílových trhů,
  • snížení zbytečných požadavků z regionů, kde neposkytujete služby, např. dopravu nebo platby.

Geo-blocking ale nenahrazuje plnohodnotný firewall. IP adresy mohou být chybně určeny, blokaci lze obejít pomocí VPN nebo proxy a některé legitimní návštěvy mohou být zablokovány omylem. Proto by geo-blocking měl být součástí širší bezpečnostní strategie zahrnující silná hesla, dvoufaktorové ověřování, aktuální WordPress, bezpečné pluginy, SSL certifikát a pravidelné zálohy SSL certifikát.

Jak .htaccess pracuje s informací o zemi?

.htaccess je konfigurační soubor pro servery Apache a LiteSpeed, který umožňuje nastavovat pravidla na úrovni adresáře. Řídí například přepisování URL, přesměrování, cache, oprávnění k souborům nebo bezpečnostní omezení. Sám o sobě však neumí automaticky zjistit zemi podle IP.

Pro geo-blocking existují tři základní přístupy:

  • použití serverového modulu GeoIP nebo MaxMind, který poskytuje proměnnou s kódem země,
  • ruční vložení IP rozsahů z daných zemí přímo do .htaccess pravidel,
  • využití geo-blockingu na úrovni CDN/WAF nebo bezpečnostního pluginu a .htaccess používat jen pro doplňková omezení.

Od roku 2026 je v praxi nejspolehlivější většinou použití CDN/WAF nebo serverových řešení s MaxMind, protože IP rozsahy se často mění a stovky či tisíce pravidel v .htaccess mohou zpomalit web. Přesto pro menší a kontrolované blokace je .htaccess stále praktický nástroj.

Co udělat před nasazením geo-blockingu v .htaccess?

Špatná úprava .htaccess může způsobit, že web nebude vůbec dostupný. Nejčastější problémy jsou chyby 500 Internal Server Error, nekonečné přesměrování, nemožnost přihlášení do wp-admin nebo nepředvídané chyby 403 Forbidden. Před úpravami proto dodržte tento kontrolní seznam:

  • Stáhněte si aktuální .htaccess soubor a vytvořte si zálohu s datem.
  • Zálohujte celý WordPress – soubory i databázi Zálohování webové stránky.
  • Ověřte, že máte funkční přístup přes FTP nebo správce souborů v hostingu.
  • Nezačínejte hned s více pravidly, nejprve vyzkoušejte jedno.
  • Zkontrolujte, že nepřekážíte Googlebotu, platebním branám, dopravním službám, API nebo CDN IP rozsahům.
  • Po změně testujte přístup z různých sítí, ne jen z jednoho prohlížeče.

Ve zkušenostech většina problémů vzniká kvůli špatnému umístění pravidel. WordPress rewrite pravidla jsou mezi # BEGIN WordPress a # END WordPress. Vaše bezpečnostní pravidla je bezpečnější vkládat nad tento blok, protože WordPress při ukládání trvalých odkazů blok přepíše.

Způsob 1: Blokace pomocí GeoIP/MaxMind proměnné v .htaccess

Pokud server poskytuje proměnnou s kódem země, lze ji využít v .htaccess pro blokování přístupu. Starší servery používají mod_geoip, moderní MaxMind GeoLite2 a mod_maxminddb. Název proměnné záleží na konfiguraci, běžné jsou GEOIP_COUNTRY_CODE, MM_COUNTRY_CODE nebo GEOIP_COUNTRY_CODE_V6.

Ukázka logiky

Následující příklad předpokládá, že server nastavuje proměnnou GEOIP_COUNTRY_CODE a blokuje přístup z Ruska (RU), Číny (CN) a Severní Koreje (KP). Před nasazením ověřte u poskytovatele, jaká proměnná je dostupná.

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

V tomto příkladu dostanou návštěvníci z uvedených zemí odpověď 403 Forbidden. Země jsou určeny dle standardu ISO 3166-1 alpha-2 (např. TR pro Česko, DE pro Německo, US pro USA). Více kódů oddělujte svislítkem.

Blokace přístupu jen na wp-login.php

Místo blokace celého webu je často vhodnější omezit přístup pouze k přihlašovací stránce WordPressu, což je rozumný kompromis. Web zůstane veřejně přístupný, ale přihlašování se omezí na vybrané země.

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

Tato konfigurace udrží dostupnost obsahu a současně sníží riziko útoků na přihlašovací stránku, které jsou často zaměřené právě na wp-login.php a xmlrpc.php.

Způsob 2: Blokace IP rozsahů zemí přímo v .htaccess

Pokud server nepodporuje GeoIP proměnné, můžete ručně přidat IP rozsahy daných zemí do .htaccess. Tento způsob je ale náročný na údržbu a může zpomalit web, protože rozsáhlé seznamy IP bloků mohou čítat tisíce řádků a často se mění.

Na Apache 2.4+ lze použít direktivu Require:

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

Příklad IP je pouze ilustrativní, skutečné rozsahy je nutné získat z důvěryhodných a aktuálních zdrojů. Pokud potřebujete přidat stovky či tisíce řádků, je lepší řešit blokaci na úrovni firewallu serveru, WAF nebo CDN.

Způsob 3: Geo-blocking přes CDN nebo WAF s podporou .htaccess

V moderní bezpečnostní architektuře WordPressu je nejškálovatelnější a nejúčinnější metoda použít geo-blocking na úrovni CDN nebo WAF. Služby jako Cloudflare, Sucuri, LiteSpeed Web ADC nebo Imunify360 umožňují rychle a centrálně filtrovat požadavky podle země ještě dříve, než se dostanou na váš webový server, čímž šetříte výkon a zdroje.

.htaccess stále může sloužit k dalším omezením – například správnému předávání skutečné IP adresy klienta, blokaci citlivých souborů nebo omezení přístupu na přihlašovací URL. Hlavní zátěž geo-blockingu by ale měla být na CDN, zvláště u webů s vysokou návštěvností.

Porovnání metod

Porovnání metod
MetodaVýhodyNevýhodyPro koho je vhodná?
GeoIP proměnná v .htaccessRychlá pravidla na serveru; nezávislé na WordPress pluginech.Vyžaduje podporu GeoIP/MaxMind; název proměnné variabilní.Technicky zdatní provozovatelé na Apache/LiteSpeed serverech.
IP rozsahy v .htaccessNevyžaduje extra modul; vhodné pro malé seznamy IP.Velké seznamy zpomalují server a jsou náročné na údržbu.Pro blokaci omezeného počtu IP rozsahů.
CDN/WAF geo-blockingBlokace dříve než na serveru; snadná správa a reporting.Potřebuje nastavení služeb; špatné nastavení může ovlivnit legitimní uživatele.Pro weby s vysokou návštěvností a bezpečnostními nároky.
WordPress bezpečnostní pluginSnadná správa přes admin rozhraní; nízké technické nároky.Pravidla se aplikují až po spuštění PHP; vyšší zátěž serveru.Menší a střední weby bez vlastní IT podpory.

Krok za krokem: Jak bezpečně nastavit geo-blocking v .htaccess

Krok za krokem: Jak bezpečně nastavit geo-blocking v .htaccess

1. Určete, co chcete blokovat

Rozhodněte se, zda chcete omezit celý web, jen přihlašovací stránku wp-login.php, nebo třeba i xmlrpc.php. Celoplošná blokace může poškodit SEO a uživatelskou zkušenost, zatímco omezení pouze kritických částí bývá efektivnější a bezpečnější.

2. Analyzujte provoz

Prohlédněte si alespoň 7–14 dní záznamů návštěv, bezpečnostních logů a dat z Google Analytics. Pokud například země, která tvoří jen 3 % návštěv, generuje 60 % útoků, blokace je rozumná. Pokud ale daná země přináší i organický prodej, může být blokace kontraproduktivní.

3. Zjistěte podporu serveru

Zjistěte, zda máte Apache, LiteSpeed nebo Nginx. .htaccess funguje na Apache a LiteSpeed, ale ne na Nginxu, kde je třeba pravidla nastavovat v konfiguraci serveru. Na Hostragons vybírejte hosting s podporou WordPress, zálohami, SSL a bezpečnostními funkcemi Web Hosting.

4. Přidejte testovací pravidlo

Nejdříve otestujte blokaci jedné země nebo IP rozsahu. Přidejte pravidlo do .htaccess nad WordPress blok a otestujte hlavní stránku, administraci, produktové stránky, formuláře i platební proces.

5. Sledujte logy

Dohlížejte na počet 403 odpovědí a jejich zdroje. Pokud je jich příliš, může být pravidlo příliš široké. Pokud jste za CDN, může se stát, že server vidí IP CDN a ne skutečnou IP klienta, což zkreslí detekci.

6. Dokumentujte pravidla

Do .htaccess přidejte komentáře s popisem, proč a kdy bylo pravidlo přidáno, a kdo ho schválil. To usnadní správu v budoucnu. Například: # 2026-02-15: blokace RU a CN kvůli útokům na wp-login.php

SEO aspekty geo-blockingu

Geo-blocking může mít dopad na SEO, protože Googlebot většinou crawluje ze serverů v USA. Pokud například zablokujete USA na celém webu, Google bude mít problém váš obsah indexovat, což vede k poklesu návštěvnosti a chybám v Search Console.

Pro bezpečný SEO přístup:

  • Nezablokujte Googlebota, Bingbota a další důležité vyhledávací roboty omylem.
  • Pokud cílíte na více zemí, pečlivě testujte tagy hreflang, canonical a přesměrování.
  • Udělejte uživatelsky přívětivou 403 stránku s vysvětlením, ne jen prázdnou chybu.
  • Po nasazení sledujte v Search Console přehled indexace a případné chyby.
  • Geo-blocking nepoužívejte pro cloaking nebo skrytí obsahu, abyste se vyhnuli penalizacím.

Obzvlášť pozor by si měly dát blogy, SaaS služby, turistické portály a exportní značky, které mají globální publikum. Pokud chcete jen omezit spam, zvažte raději reCAPTCHA, limitování požadavků nebo bezpečnostní pluginy.

Je geo-blocking samospasitelný z hlediska bezpečnosti?

Ne. Geo-blocking sníží povrch útoku, ale neochrání proti všem hrozbám. Útočníci mohou použít VPN, proxy, botnety nebo cloudové servery z povolených zemí. Proto je důležité kombinovat geo-blocking s dalšími opatřeními:

  • Pravidelně aktualizujte WordPress, šablony a pluginy.
  • Používejte unikátní uživatelská jména a silná hesla pro administrátory.
  • Zapněte dvoufaktorové ověřování (2FA).
  • Omezte počet pokusů o přihlášení (rate limiting) u wp-login.php a xmlrpc.php.
  • Odstraňte nepotřebné pluginy a nepoužívejte šablony z nedůvěryhodných zdrojů.
  • Proveďte kompletní přechod na HTTPS s platným SSL certifikátem SSL certifikát.
  • Zaveďte pravidelné zálohy a plán obnovy dat.

Spolehlivá hostingová infrastruktura je základem bezpečnosti. Izolace zdrojů, aktuální verze PHP, antivirová kontrola, automatické zálohy a rychlá podpora přímo ovlivňují bezpečnost WordPressu Bezpečný WordPress hosting.

Nejčastější chyby a jak se jim vyhnout

Chyba 1: Vložení příliš rozsáhlého seznamu IP do .htaccess

Velké množství IP pravidel zpomaluje server, protože se vyhodnocují při každém požadavku. Řešením je použít blokaci na úrovni CDN, WAF nebo firewallu serveru.

Chyba 2: Zablokování Googlebota a dalších integračních služeb

Platební brány, e-mailové služby, dopravní API a vyhledávací roboti mohou přijít z různých zemí. Po změnách vždy kontrolujte logy a tyto služby přidejte na whitelist.

Chyba 3: Očekávání, že .htaccess funguje na Nginxu

Nginx nevyužívá .htaccess soubor. Pokud máte Nginx, musíte geo-blocking nastavit přímo v jeho konfiguraci, případně přes CDN nebo bezpečnostní plugin. U sdíleného hostingu nemusí být přístup ke konfiguraci možný.

Chyba 4: Úprava souboru bez zálohy

I malá chyba může způsobit nedostupnost webu. Než soubor uložíte, vždy si ho uložte jako zálohu mimo server a v případě problému ji obnovte.

Chyba 5: Blokace bez datové analýzy

Blokovat celé země na základě domněnek může vést ke ztrátě zákazníků. Nejprve analyzujte logy a data o konverzích, případně omezte blokaci jen na konkrétní části webu.

Alternativy: pluginy, firewally a blokace na úrovni serveru

Pokud nechcete upravovat kód, existují WordPress bezpečnostní pluginy s funkcí geo-blockingu. Ty ale fungují až po spuštění PHP a nemusí být tak efektivní při vysokém zatížení. Jsou ale uživatelsky přívětivé pro menší a střední weby.

Na serveru lze blokovat IP pomocí CSF, firewalld, iptables nebo přes panel poskytovatele. Tyto metody fungují dříve než .htaccess, ale na sdíleném hostingu není často přístupná. V takovém případě můžete konzultovat s podporou Hostragons vhodnou bezpečnostní strategii nebo využít managed hosting Hostingové balíčky.

Kontrolní seznam po nasazení geo-blockingu

Po přidání pravidel nezapomeňte důkladně otestovat a zkontrolovat:

  • Funkčnost hlavní stránky, kategorií, článků, produktů a košíku.
  • Přístup do wp-admin a wp-login.php z povolených zemí.
  • Odesílání kontaktních formulářů, registrace a platební procesy.
  • Test živých URL v Google Search Console.
  • Prohlédnutí serverových error logů na zvýšení chyb 500 nebo 403.
  • Vyčištění cache CDN a ověření správného předání skutečné IP klienta.
  • Zdokumentování účelu pravidla a data v týmové dokumentaci.

Tyto kroky jsou zásadní, zvlášť u komerčních WordPress webů, protože i jednoduché pravidlo může ovlivnit konverze, hodnocení reklam nebo funkčnost API integrací API a integrace.

Často kladené otázky

Je možné blokovat přístup z konkrétních zemí v .htaccess ve WordPressu?

Ano, je to možné, ale soubor .htaccess musí mít přístup k informaci o zemi, což znamená, že server musí podporovat GeoIP/MaxMind proměnné nebo je potřeba ručně přidat IP rozsahy zemí do pravidel. Samotný .htaccess IP adresu neanalyzuje.

Způsobí blokace zemí v .htaccess škodu SEO?

Pokud je špatně nastavená, může. Zvlášť pokud omylem zablokujete Googlebota nebo IP adresy CDN. Proto je lepší omezovat jen citlivé oblasti, např. přihlašování, než blokovat celý web.

Jaké zeměpisné kódy používat?

Obvykle se používají standardní ISO 3166-1 alpha-2 kódy (např. CZ pro Česko, DE pro Německo, US pro USA, FR pro Francii). Zkontrolujte, jaké kódy podporuje váš GeoIP modul nebo služba.

Funguje geo-blocking pomocí .htaccess na Nginx serveru?

Ne, Nginx nevyužívá .htaccess. Geo-blocking je třeba nastavit přímo v konfiguraci Nginxu, přes CDN, WAF nebo bezpečnostní pluginy.

Zastaví geo-blocking útočníky používající VPN?

Ne úplně. VPN, proxy a botnety umožňují útočníkům skrýt skutečnou zemi. Geo-blocking je ale jedna z vrstev ochrany, která zmenšuje rozsah útoku. Doporučuje se kombinovat s 2FA, WAF, pravidelnými aktualizacemi a silnými hesly.

Shrnutí a další kroky

Blokace přístupu z vybraných zemí v WordPress pomocí .htaccess může efektivně snížit spam, brute-force útoky a nežádoucí provoz. Nejbezpečnější je začít analýzou dat, omezit blokaci na nezbytné oblasti, zálohovat, testovat a sledovat logy. Pro rozsáhlé blokace jsou vhodnější CDN/WAF nebo serverové řešení. Pokud hledáte bezpečný, rychlý a udržitelný hosting pro WordPress, doporučujeme zvážit služby Hostragons s jejich hostingem, doménami a SSL certifikáty. Plánujte změny s rozvahou a klidem Dotaz na doménu WordPress hosting.

Sdílejte tento článek:

Tým Hostragons

Aktuální průvodci od našeho týmu odborníků na hosting, servery a doménová jména. Pojďme společně najít to správné řešení pro váš projekt.

Kontaktujte nás