Web na WordPressu přesměrovává na jiný web: jak přesměrování najít

Návštěvníci končí na stránce s loterií, lékárnou nebo falešnou technickou podporou, a vy přitom vidíte svůj web normálně. To je znak vloženého přesměrování, nejčastěji podmíněného. Tento průvodce vysvětluje, jak přesměrování vyvolat, jak ho najít v souborech nebo v databázi a jak zavřít přístup, kterým bylo vloženo.

Publikováno 21. září 2026 Doba čtení: 10 minut

Všichni průvodci

To nejdůležitější

  1. Vyvolejte přesměrování jako návštěvník: anonymní okno prohlížeče, telefon na mobilních datech, příchod z výsledku vyhledávání.
  2. Než cokoli změníte, pořiďte úplnou kopii webu v současném stavu, soubory i databázi.
  3. Změňte hesla k hostingu, FTP, databázi a administrátorským účtům WordPressu, pak vyměňte bezpečnostní klíče ve wp-config.php.
  4. Hledejte přesměrování na čtyřech místech: .htaccess, soubory PHP, databáze, nastavení adresy webu.
  5. Odstraňte i přístup, kterým se přesměrování dostalo dovnitř: neznámé administrátorské účty, soubory PHP ve wp-content/uploads, pluginy k přeinstalaci nebo smazání.
  6. Otevřete přehled „Bezpečnostní problémy“ v Google Search Console, a pokud je v něm web uveden, požádejte o kontrolu.

Proč přesměrování nevidíte

Přesměrování vložené při napadení si vybírá, koho se týká. Nejčastěji šetří toho, kdo web spravuje, aby zůstalo na místě co nejdéle. Nejběžnější podmínky:

Zprávu od zákazníka ve smyslu „váš web mě posílá jinam“ proto berte vážně, i když se vám všechno zobrazuje správně.

Jak přesměrování vyvolat

Vžijte se do situace návštěvníka, kterého přesměrování zasáhne:

  1. Otevřete anonymní okno prohlížeče, vyhledejte název své firmy ve vyhledávači a klikněte na svůj výsledek.
  2. Zopakujte to z telefonu, na mobilních datech místo Wi-Fi.
  3. Poznamenejte si cílovou adresu, čas a zařízení: tyto tři údaje se hodí poskytovateli hostingu a později i pro žádost o kontrolu u Googlu.

Pokud máte přístup k terminálu, tento příkaz si vyžádá vaši úvodní stránku a představí se přitom jako iPhone, který přichází z Googlu:

Terminál (ve Windows napište místo curl příkaz curl.exe)
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.vas-web.com/

Přečtěte si první řádky odpovědi. Kód 301 nebo 302, za kterým následuje řádek Location: s neznámou adresou, znamená přesměrování provedené serverem: sídlí v .htaccess nebo v souboru PHP. Kód 200, zatímco prohlížeč přesměrován je, znamená přesměrování provedené ve stránce, v JavaScriptu: nejčastěji sídlí v databázi nebo v souboru šablony.

Než na web sáhnete: tři kroky

  1. Úplná kopie v současném stavu. Soubory i databáze, s datem, uložené mimo server. Slouží jako důkaz, jako srovnávací bod a jako pojistka, pokud čištění odstraní něco užitečného.
  2. Hesla, z čistého zařízení. Zákaznická sekce hostingu, účty FTP nebo SFTP, uživatel databáze (nové heslo zapište do wp-config.php, konstanta DB_PASSWORD) a pak každý administrátorský účet WordPressu.
  3. Bezpečnostní klíče. Nahraďte osm řádků od AUTH_KEY po NONCE_SALT ve wp-config.php novou sadou vygenerovanou na https://api.wordpress.org/secret-key/1.1/salt/. Všechny otevřené relace se ukončí, včetně relace útočníka.
S WP-CLI zvládnete třetí krok jediným příkazem
wp config shuffle-salts

Kde se přesměrování skrývá

1. Soubor .htaccess

V kořenovém adresáři webu, a někdy i v podadresáři, může .htaccess obsahovat pravidla pro přepis adres, která přidal útočník. Blok, který zapisuje sám WordPress, je krátký a ohraničený řádky # BEGIN WordPress a # END WordPress:

Blok, který WordPress v češtině zapisuje pro web nainstalovaný v kořeni domény
# BEGIN WordPress
# Direktivy (řádky) mezi "BEGIN WordPress" a "END WordPress" jsou
# dynamicky generované a měly by být upravovány pouze pomocí filtrů WordPressu.
# Veškeré změny směrnic mezi těmito značkami budou přepsány.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Pravidlo RewriteCond, které testuje %{HTTP_REFERER} (google, bing, facebook) nebo %{HTTP_USER_AGENT} (android, iphone, mobile), následované pravidlem RewriteRule vedoucím na vnější adresu, je právě to přesměrování. Pluginy pro cache a zabezpečení zapisují i vlastní bloky, označené svým názvem: než blok odstraníte, porovnejte ho se seznamem svých pluginů.

2. Soubory PHP

WP-CLI porovná soubory jádra WordPressu a pluginů s kontrolními součty, které zveřejňuje WordPress.org, a vypíše každý změněný nebo přidaný soubor:

Terminál, v kořenovém adresáři webu
wp core verify-checksums
wp plugin verify-checksums --all

Druhý příkaz pokrývá pluginy distribuované adresářem WordPress.org. Plugin koupený u vydavatele se porovnává s čerstvou kopií staženou z vašeho účtu u něj. Je to častý případ: z 540 webů malých a středních firem na WordPressu v našem měření z 1. září 2026 nese 66 % alespoň jeden plugin, který ve veřejném adresáři není.

Bez WP-CLI poskytnou první výběr dvě hledání:

Terminál, v kořenovém adresáři webu
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"

První vypíše soubory PHP změněné za posledních 30 dní, druhé soubory PHP uložené ve složce médií, kde jsou už z podstaty podezřelé (některé pluginy tam vkládají prázdný index.php, který je v pořádku). Datum změny lze zfalšovat: starý soubor na nesprávném místě si prohlédněte také.

Nejdřív otevřete wp-config.php, index.php v kořeni, functions.php a header.php aktivní šablony a složku wp-content/mu-plugins: pluginy v ní se načítají automaticky a v administraci je nelze deaktivovat. Čeho si všímat: eval(, base64_decode(, gzinflate(, str_rot13(, dlouhé nečitelné řetězce nebo window.location následované adresou, kterou neznáte.

3. Databáze

Přesměrování v JavaScriptu se rádo ukládá do obsahu stránek nebo do nastavení, kde ho žádný soubor neukáže. WP-CLI vyhledá řetězec ve všech tabulkách WordPressu:

Terminál
wp db search "<script"
wp db search "fromCharCode"

Bez WP-CLI spustíte stejná hledání v phpMyAdminu, na kartě SQL:

SQL (wp_ nahraďte prefixem nastaveným ve wp-config.php, proměnná $table_prefix)
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';

Některé výsledky jsou v pořádku: nástroj pro měření návštěvnosti, cookie lišta nebo widget, který jste vložili sami. Prozkoumejte vše, co neodpovídá ničemu, co jste instalovali, zejména skript, který skládá adresu z kódů znaků.

4. Nastavení adresy a účty

V Nastavení > Obecné musí pole „Instalace WordPressu (URL)“ a „Úvodní stránka webu (URL)“ obsahovat vaši doménu. Stejné hodnoty lze vynutit ve wp-config.php konstantami WP_HOME a WP_SITEURL: zkontrolujte obě místa.

Terminál
wp option get home
wp option get siteurl
wp user list --role=administrator

Když jsou konstanty definované, první dva příkazy vrátí jejich hodnotu. Poslední vypíše administrátory s datem registrace; v administraci získáte stejný seznam v nabídce Uživatelé, s filtrem na roli Administrátor. Účet, který nikdo nepoznává, smažte a jeho obsah přiřaďte legitimnímu účtu.

Odstranit přesměrování a pak i přístup, kterým se dostalo dovnitř

Smazáním řádku, který přesměrovává, zastavíte příznak. Přístup, který útočník použil, zůstává otevřený, dokud ho nenajdete, a přesměrování se během několika dní vrátí. Pořadí, které funguje:

  1. Nahraďte soubory jádra čerstvou kopií: smažte složky wp-admin a wp-includes a spusťte wp core download --skip-content --force, který jádro přepíše, aniž by se dotkl vašich pluginů, šablon a médií. Příkaz přepisuje existující soubory, ale žádný přidaný soubor nesmaže: proto se obě složky mažou nejdřív a proto neznámé soubory PHP v kořeni odstraníte ručně.
  2. Přeinstalujte šablonu a každý plugin z jejich oficiálního zdroje a smažte ty, které web už nepoužívá, včetně deaktivovaných: jejich soubory na serveru zůstávají.
  3. Odstraňte cizí soubory PHP z wp-content/uploads, pravidla přidaná do .htaccess a skripty nalezené v databázi.
  4. Zkontrolujte naplánované úlohy příkazem wp cron event list: úloha s neznámým názvem může kód vložit znovu.
  5. Aktualizujte WordPress, šablonu a pluginy.
  6. Zopakujte testy ze začátku, z několika zařízení a po několik dní.

Pokud web uchovává osobní údaje (formuláře, zákaznické účty, objednávky), poznamenejte si čas, kdy jste napadení zjistili. V Evropské unii obecné nařízení o ochraně osobních údajů (GDPR) ukládá ohlásit porušení zabezpečení osobních údajů dozorovému úřadu do 72 hodin od okamžiku, kdy se o něm správce dozvěděl, ledaže je nepravděpodobné, že by toto porušení mělo za následek riziko pro práva a svobody fyzických osob.

Google a to, co vidí vaši návštěvníci

Když Google přesměrování odhalí, Chrome může před otevřením webu zobrazit červenou stránku „Nebezpečný web“ a Google může pod váš výsledek vyhledávání připsat „Tyto stránky možná byly napadeny hackery“. Přehled Bezpečnostní problémy v Google Search Console ukazuje, co bylo zjištěno a na kterých adresách. Když je web vyčištěný, tlačítko Požádat o kontrolu spustí ověření.

Po přesměrování: web převzatý a udržovaný

Odstraněné přesměrování nechává otevřenou otázku: kdo se o web postará potom? Simafri převezme váš web na WordPressu, vrátí ho online na základ, který hostujeme, zabezpečujeme a udržujeme aktuální, a pak se o něj stará, měsíc co měsíc. Doména i obsah zůstávají vaše.

Chci předat svůj web

Časté otázky

Proč můj web na WordPressu přesměrovává jen na mobilu?

Vložený kód čte User-Agent prohlížeče a přesměrovává jen telefony. Kdo web spravuje, často z počítače, nic nevidí. Otestujte web z telefonu na mobilních datech nebo příkazem curl s identifikátorem mobilního prohlížeče.

Odstraní přeinstalace WordPressu přesměrování?

Přeinstalace jádra přepíše soubory WordPressu, ale nesmaže ty, které tam mohl přidat útočník. Databáze, šablona, pluginy a složka médií zůstanou, jak jsou, a právě tam se přesměrování a přístup útočníka nacházejí nejčastěji. Čerstvé jádro je jeden krok čištění, spolu s databází, pluginy, účty a hesly.

Web byl vyčištěn, proč se přesměrování vrací?

Protože přístup, kterým bylo vloženo, tam pořád je: přidaný administrátorský účet, soubor PHP ukrytý mezi médii, naplánovaná úloha, zranitelný plugin. Každý z nich umožní kód po vyčištění vložit znovu. Zkontrolujte účty, složku wp-content/uploads, naplánované úlohy a verze pluginů a pak hesla změňte znovu.

Jak zjistím, jestli Google přesměrování zaznamenal?

Otevřete Google Search Console a přehled Bezpečnostní problémy: uvádí zjištěné problémy a příklady adres. Pokud web v Search Console ještě ověřený není, ověření záznamem DNS pokryje celou doménu.

Kontaktujte nás