WordPress-sivusto ohjaa toiselle sivustolle: näin löydätte uudelleenohjauksen

Kävijänne päätyvät arpajaissivulle, verkkoapteekkiin tai väärennetyn teknisen tuen sivulle, mutta itse näette sivustonne normaalisti. Se on merkki sivustolle ujutetusta uudelleenohjauksesta, joka toimii useimmiten vain tietyin ehdoin. Tämä opas näyttää, miten uudelleenohjaus toistetaan, miten se löytyy tiedostoista tai tietokannasta ja miten suljetaan reitti, jota pitkin se asennettiin.

Julkaistu 21. syyskuuta 2026 Lukuaika: 10 minuuttia

Kaikki oppaat

Lyhyesti

  1. Toistakaa uudelleenohjaus kävijän tavoin: yksityinen selainikkuna, puhelin mobiiliyhteydellä, siirtyminen sivustolle hakutuloksesta.
  2. Ottakaa sivustosta täydellinen kopio sellaisenaan, tiedostot ja tietokanta, ennen kuin muutatte mitään.
  3. Vaihtakaa webhotellin, FTP:n, tietokannan ja WordPressin ylläpitäjien salasanat ja uusikaa sitten wp-config.php-tiedoston tietoturva-avaimet.
  4. Etsikää uudelleenohjausta neljästä paikasta: .htaccess, PHP-tiedostot, tietokanta ja sivuston osoiteasetukset.
  5. Poistakaa myös reitti, jota pitkin se tuli: tuntemattomat ylläpitäjätilit, PHP-tiedostot kansiossa wp-content/uploads, uudelleen asennettavat tai poistettavat lisäosat.
  6. Katsokaa Google Search Consolen Tietoturvaongelmat-raportti ja pyytäkää tarkastusta, jos sivusto on siinä.

Miksi ette itse näe uudelleenohjausta

Murron yhteydessä asennettu uudelleenohjaus valitsee, keihin se kohdistuu. Useimmiten se säästää sivustoa hoitavan henkilön, jotta se pysyisi paikallaan mahdollisimman pitkään. Yleisimmät ehdot:

Kun asiakas kirjoittaa, että sivustonne vie hänet muualle, viesti kannattaa ottaa todesta, vaikka kaikki näyttäisi omalla ruudullanne oikealta.

Toistakaa uudelleenohjaus

Asettukaa sen kävijän asemaan, jota uudelleenohjaus koskee:

  1. Avatkaa yksityinen selainikkuna, hakekaa yrityksenne nimellä hakukoneesta ja klikatkaa omaa hakutulostanne.
  2. Toistakaa sama puhelimella, mobiiliyhteydellä eikä Wi-Fi-verkossa.
  3. Kirjatkaa ylös kohdeosoite, kellonaika ja laite: webhotelli tarvitsee nämä tiedot, ja myöhemmin niitä tarvitaan myös Googlelle lähetettävään tarkastuspyyntöön.

Jos käytössänne on pääte, tämä komento pyytää etusivuanne esiintyen iPhonena, joka tulee Googlesta:

Pääte (Windowsissa kirjoittakaa curl-komennon tilalle 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.sivustonne.com/

Lukekaa vastauksen ensimmäiset rivit. Tilakoodi 301 tai 302, jota seuraa tuntemattomaan osoitteeseen vievä Location:-rivi, tarkoittaa, että uudelleenohjauksen tekee palvelin: se on .htaccess-tiedostossa tai PHP-tiedostossa. Tilakoodi 200, vaikka selain ohjataan silti muualle, tarkoittaa, että uudelleenohjaus tapahtuu sivun sisällä JavaScriptillä: se on useimmiten tietokannassa tai teeman tiedostossa.

Ennen kuin kosketatte sivustoon: kolme toimenpidettä

  1. Täydellinen kopio sellaisenaan. Tiedostot ja tietokanta, päivättynä ja tallennettuna muualle kuin palvelimelle. Kopio on todiste, vertailukohta ja turvaverkko, jos siivous poistaa jotain tarpeellista.
  2. Salasanat vaihdetaan puhtaalta laitteelta. Webhotellin asiakastili, FTP- tai SFTP-tunnukset, tietokannan käyttäjä (päivittäkää uusi salasana wp-config.php-tiedoston vakioon DB_PASSWORD) ja jokainen WordPressin ylläpitäjätili.
  3. Tietoturva-avaimet. Korvatkaa wp-config.php-tiedoston kahdeksan riviä, AUTH_KEY-rivistä NONCE_SALT-riviin, uusilla avaimilla, jotka saatte osoitteesta https://api.wordpress.org/secret-key/1.1/salt/. Kaikki avoimet istunnot suljetaan, myös tunkeutujan.
WP-CLI:llä kolmas toimenpide on yksi komento
wp config shuffle-salts

Mihin uudelleenohjaus kätkeytyy

1. .htaccess-tiedosto

Sivuston juurihakemistossa, ja joskus myös alikansiossa, olevaan .htaccess-tiedostoon tunkeutuja voi lisätä omia uudelleenkirjoitussääntöjään. WordPressin itse kirjoittama lohko on lyhyt, ja sen rajaavat rivit # BEGIN WordPress ja # END WordPress:

Lohko, jonka suomenkielinen WordPress kirjoittaa verkkotunnuksen juureen asennetulle sivustolle
# BEGIN WordPress
# Rivit, jotka ovat "BEGIN WordPress" ja "END WordPress" välissä on luotu dynaamisesti ja niitä tulee muokata vain WordPressin filttereillä. Kaikki manuaaliset muutokset riveihin tullaan yliajamaan.
<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

Uudelleenohjaus on RewriteCond-sääntö, joka testaa arvoa %{HTTP_REFERER} (google, bing, facebook) tai %{HTTP_USER_AGENT} (android, iphone, mobile) ja jota seuraa ulkopuoliseen osoitteeseen vievä RewriteRule. Myös välimuisti- ja tietoturvalisäosat kirjoittavat omia lohkojaan, jotka on merkitty niiden nimellä: verratkaa jokaista lohkoa lisäosienne luetteloon ennen kuin poistatte sen.

2. PHP-tiedostot

WP-CLI vertaa WordPressin ytimen ja lisäosien tiedostoja WordPress.orgin julkaisemiin tarkistussummiin ja luettelee jokaisen muutetun tai lisätyn tiedoston:

Pääte, sivuston juurihakemistossa
wp core verify-checksums
wp plugin verify-checksums --all

Jälkimmäinen komento kattaa WordPress.orgin hakemiston kautta jaetut lisäosat. Julkaisijalta ostettua lisäosaa verrataan tuoreeseen kopioon, jonka lataatte omalta asiakastililtänne julkaisijan palvelusta. Tilanne on yleinen: 1. syyskuuta 2026 tekemämme mittauksen 540 pk-yritysten WordPress-sivustosta 66 % käyttää vähintään yhtä lisäosaa, jota julkisessa hakemistossa ei ole.

Ilman WP-CLI:tä kaksi hakua antaa ensimmäisen karsinnan:

Pääte, sivuston juurihakemistossa
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"

Ensimmäinen luettelee viimeisten 30 päivän aikana muutetut PHP-tiedostot, toinen mediakansioon tallennetut PHP-tiedostot, jotka ovat siellä lähtökohtaisesti epäilyttäviä (jotkin lisäosat asettavat sinne tyhjän index.php-tiedoston, mikä on asianmukaista). Muokkauspäivämäärän voi väärentää: väärässä paikassa oleva vanhakin tiedosto kannattaa tutkia.

Avatkaa ensin wp-config.php, juurihakemiston index.php, aktiivisen teeman functions.php ja header.php sekä kansio wp-content/mu-plugins: siellä olevat lisäosat latautuvat automaattisesti, eikä niitä voi poistaa käytöstä hallintapaneelista. Etsittävät merkit: eval(, base64_decode(, gzinflate(, str_rot13(, pitkät lukukelvottomat merkkijonot tai window.location, jota seuraa osoite, jota ette tunnista.

3. Tietokanta

JavaScriptillä tehty uudelleenohjaus ujutetaan usein sivujen sisältöön tai asetuksiin, joissa mikään tiedosto ei sitä näytä. WP-CLI hakee merkkijonoa kaikista WordPressin tauluista:

Pääte
wp db search "<script"
wp db search "fromCharCode"

Ilman WP-CLI:tä samat haut tehdään phpMyAdminissa, SQL-välilehdellä:

SQL (korvatkaa wp_ etuliitteellä, joka on määritetty wp-config.php-tiedoston muuttujassa $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%';

Osa osumista on asianmukaisia: kävijäseurannan työkalu, evästebanneri tai itse lisäämänne widget. Kaikki, mikä ei vastaa mitään asentamaanne, kannattaa tutkia, erityisesti skripti, joka muodostaa osoitteen merkkikoodeista.

4. Osoiteasetukset ja tilit

Kohdassa Asetukset > Yleinen kenttien ”WordPressin osoite (URL)” ja ”Sivuston osoite (URL)” on näytettävä oma verkkotunnuksenne. Samat arvot voidaan pakottaa wp-config.php-tiedostossa vakioilla WP_HOME ja WP_SITEURL: tarkistakaa molemmat paikat.

Pääte
wp option get home
wp option get siteurl
wp user list --role=administrator

Kun vakiot on määritetty, kaksi ensimmäistä komentoa palauttavat niiden arvot. Viimeinen luettelee ylläpitäjät rekisteröitymispäivineen; hallintapaneelissa sama luettelo löytyy Käyttäjät-valikosta rajattuna Ylläpitäjä-rooliin. Tili, jota kukaan ei tunnista, poistetaan, ja sen sisältö siirretään asianmukaiselle tilille.

Poistakaa uudelleenohjaus ja sitten reitti, jota pitkin se tuli

Uudelleenohjaavan rivin poistaminen lopettaa oireen. Tunkeutujan käyttämä reitti pysyy kuitenkin auki, kunnes se löytyy, ja uudelleenohjaus palaa muutamassa päivässä. Järjestys, joka pitää:

  1. Korvatkaa ytimen tiedostot tuoreella kopiolla: poistakaa kansiot wp-admin ja wp-includes ja ajakaa sitten wp core download --skip-content --force, joka kirjoittaa ytimen uudelleen koskematta lisäosiinne, teemoihinne ja mediatiedostoihinne. Komento korvaa olemassa olevat tiedostot mutta jättää lisätyt tiedostot paikalleen: siksi nämä kaksi kansiota poistetaan ensin, ja siksi juurihakemiston tuntemattomat PHP-tiedostot poistetaan käsin.
  2. Asentakaa teema ja jokainen lisäosa uudelleen niiden virallisesta lähteestä ja poistakaa ne, joita sivusto ei enää käytä, myös käytöstä poistetut: niiden tiedostot ovat yhä palvelimella.
  3. Poistakaa vieraat PHP-tiedostot kansiosta wp-content/uploads, .htaccess-tiedostoon lisätyt säännöt ja tietokannasta löytyneet skriptit.
  4. Tarkistakaa ajastetut tehtävät komennolla wp cron event list: tuntemattoman niminen tehtävä voi palauttaa koodin.
  5. Päivittäkää WordPress, teema ja lisäosat.
  6. Tehkää alun testit uudelleen useilla laitteilla ja usean päivän ajan.

Jos sivusto säilyttää henkilötietoja (lomakkeita, asiakastilejä, tilauksia), kirjatkaa ylös kellonaika, jolloin havaitsitte murron. Euroopan unionissa yleinen tietosuoja-asetus edellyttää, että henkilötietojen tietoturvaloukkauksesta ilmoitetaan valvontaviranomaiselle 72 tunnin kuluessa sen ilmitulosta, paitsi jos loukkauksesta ei todennäköisesti aiheudu riskiä luonnollisten henkilöiden oikeuksille ja vapauksille.

Google ja se, mitä kävijänne näkevät

Kun Google havaitsee uudelleenohjauksen, Chrome voi näyttää punaisen ”Vaarallinen sivusto” -varoituksen ennen sivuston avaamista, ja Google voi lisätä hakutuloksenne yhteyteen merkinnän ”Tämä sivusto voi olla hakkeroitu”. Google Search Consolen Tietoturvaongelmat-raportti kertoo, mitä on havaittu ja missä osoitteissa. Kun sivusto on siivottu, Pyydä tarkastusta -painike käynnistää tarkistuksen.

Uudelleenohjauksen jälkeen sivusto haltuun ja pystyyn

Kun uudelleenohjaus on poistettu, jää yksi kysymys: kuka pitää sivustosta huolta tästä eteenpäin? Simafri ottaa WordPress-sivustonne haltuun, palauttaa sen verkkoon perustalle, jota ylläpidämme, suojaamme ja pidämme ajan tasalla, ja huolehtii siitä kuukausi toisensa jälkeen. Verkkotunnus ja sisältö pysyvät teidän.

Ottakaa sivustoni haltuun

Usein kysytyt kysymykset

Miksi WordPress-sivustoni ohjaa muualle vain puhelimella?

Sivustolle ujutettu koodi lukee selaimen User-Agent-tunnisteen ja ohjaa muualle vain puhelimet. Sivustoa hoitava henkilö käyttää usein tietokonetta eikä huomaa mitään. Testatkaa puhelimella mobiiliyhteydellä tai curlilla, joka lähettää mobiiliselaimen tunnisteen.

Poistaako WordPressin uudelleenasennus uudelleenohjauksen?

Ytimen uudelleenasennus kirjoittaa WordPressin tiedostot uudelleen, mutta tunkeutujan mahdollisesti lisäämät tiedostot jäävät paikalleen. Tietokanta, teema, lisäosat ja mediakansio pysyvät ennallaan, ja juuri niissä uudelleenohjaus ja tunkeutujan reitti useimmiten ovat. Tuore ydin on yksi siivouksen vaihe, ja sen rinnalle kuuluvat tietokanta, lisäosat, tilit ja salasanat.

Sivusto siivottiin, miksi uudelleenohjaus palaa?

Koska reitti, jota pitkin se asennettiin, on yhä olemassa: lisätty ylläpitäjätili, mediatiedostojen joukkoon kätketty PHP-tiedosto, ajastettu tehtävä tai haavoittuvainen lisäosa. Mikä tahansa niistä mahdollistaa koodin palauttamisen siivouksen jälkeen. Tarkistakaa tilit, kansio wp-content/uploads, ajastetut tehtävät ja lisäosien versiot ja vaihtakaa sitten salasanat uudelleen.

Mistä tiedän, onko Google havainnut uudelleenohjauksen?

Avatkaa Google Search Console ja sen Tietoturvaongelmat-raportti: se luettelee havaitut ongelmat ja esimerkkiosoitteita. Jos sivustoa ei ole vielä todennettu Search Consolessa, DNS-tietueella tehty todennus kattaa koko verkkotunnuksen.

Ota yhteyttä