Verk­ko­tun­nus­ten tai ali­verk­ko­tun­nus­ten oh­jaa­mi­seen verk­ko­si­vus­to­si toiseen osioon tai ulkoiseen osoit­tee­seen on tarjolla monia vaih­toeh­to­ja. Uu­del­lee­noh­jauk­set to­teu­te­taan usein .htaccess-tiedoston, PHP-skriptin, HTML-me­ta­tun­nis­tei­den ja Ja­vaSc­rip­tin avulla.

Mihin verk­ko­tun­nus­ten uu­del­lee­noh­jauk­sia käytetään?

Uu­del­lee­noh­jauk­sia käytetään il­moit­ta­maan pal­ve­li­mil­le, että sivuston sisältö on siirretty yhdestä URL-osoit­tees­ta toiseen. Tämä on tarpeen, kun al­ku­pe­räi­nen verkko-osoite on saapuvan linkin kohde, on tal­len­net­tu käyttäjän tie­to­ko­neel­le tai voi näkyä näkyvällä sijalla ha­ku­ko­nei­den tu­los­si­vuil­la (SERP). Tällöin uu­del­lee­noh­jaus ilmoittaa se­lai­mel­le tai ha­ku­ro­bo­til­le, että sisältö on siirretty, ja tarjoaa käyt­tä­jäl­le linkin uuteen osoit­tee­seen. Ilman uu­del­lee­noh­jauk­sia verk­ko­si­vus­ton kävijät näkisivät etsimänsä sivuston sijasta 404-vir­he­si­vun.

Tämä on asia, jota eri­tyi­ses­ti kau­pal­li­set verk­kopro­jek­tit haluavat välttää. Verk­ko­kau­pois­sa on jat­ku­vas­ti muuttuva tuo­te­va­li­koi­ma, joka esitetään useilla eri verk­ko­si­vuil­la. Kun tuotetta ei enää ole saa­ta­vil­la, po­ten­ti­aa­li­set asiakkaat ohjataan sivulle, jolla on esillä vastaavia tuotteita. Näin voit ohjata kä­vi­jä­vir­to­ja te­hok­kaas­ti ja minimoida pois­tu­mispro­sen­tin.

Kun määrität verk­ko­tun­nuk­sen uu­del­lee­noh­jauk­sen, voit tarjota saman sisällön myös eri verkko-osoit­teis­sa. Kaikki vaih­toeh­toi­set osoitteet ohjataan yk­sin­ker­tai­ses­ti halutulle verk­ko­tun­nuk­sel­le riip­pu­mat­ta siitä, minkä URL-osoitteen tai polun käyttäjät syöttävät.

Mitä erilaisia verk­ko­tun­nus­ten uu­del­lee­noh­jauk­sia on olemassa?

Yleensä erotetaan toi­sis­taan asia­kas­puo­len ja pal­ve­lin­puo­len uu­del­lee­noh­jauk­set. Pal­ve­lin­puo­len verk­ko­tun­nusuu­del­lee­noh­jauk­sis­sa vastaavat HTTP-ti­la­koo­dit vä­li­te­tään käyt­tä­jä­oh­jel­mil­le (se­lai­mil­le tai ha­ku­ro­bo­teil­le). Asia­kas­puo­len uu­del­lee­noh­jauk­sis­sa tilanne on hieman erilainen. Ne to­teu­te­taan ilman min­kään­lais­ta vastausta, eli ti­la­koo­de­ja ei lähetetä. Tästä syystä kaikki käyt­tä­jä­oh­jel­mat eivät tue jäl­kim­mäis­tä vaih­toeh­toa. Tämä haitta voi joskus johtaa ti­lan­tei­siin, joissa kävijät jäävät al­ku­pe­räi­sel­le sivulle eivätkä siirry minnekään. Tällaiset haitat ovat syy siihen, että pal­ve­lin­puo­len vaih­toeh­to on usein suo­si­tel­ta­va uu­del­lee­noh­jauk­sis­sa. Asia­kas­puo­len rat­kai­su­ja tulisi käyttää vain silloin, kun pal­ve­lin­puo­len verk­ko­tun­nuk­sen uu­del­lee­noh­jauk­set on suljettu pois tek­ni­sis­tä syistä.

Toinen verk­ko­tun­nuk­sen uu­del­lee­noh­jaus­muo­to on lä­pi­nä­ky­vä tai näkymätön uu­del­lee­noh­jaus. Tässä uu­del­lee­noh­jaus­muo­dos­sa URL-osoite ei muutu. Peit­tä­vien verk­ko­tun­nusoh­jauk­sien ta­pauk­ses­sa käyt­tä­jäl­le näkyvä URL-osoite ei muutu, vaikka asiakas on ohjattu toiselle verk­ko­tun­nuk­sel­le ja hänelle näytetään toisen verk­ko­si­vun sisältöä. Koska tä­män­tyyp­pi­nen ohjaus voi kuitenkin aiheuttaa ongelmia in­dek­soin­nis­sa ja URL-osoitteen näyt­tä­mi­ses­sä se­lai­mes­sa, sitä ei suo­si­tel­la, ellei tiettyjä ra­joi­tuk­sia ole asetettu.

Vinkki

Haluatko määrittää verk­ko­tun­nuk­sen uu­del­lee­noh­jauk­sen? Seu­raa­vas­ta IONOS-tu­ki­kes­kuk­sen ar­tik­ke­lis­ta löydät vai­heit­tai­set ohjeet verk­ko­tun­nuk­sen uu­del­lee­noh­jaa­mi­seen toiseen verk­ko­tun­nuk­seen.

Pal­ve­lin­puo­len uu­del­lee­noh­jauk­set

Useim­mis­sa ta­pauk­sis­sa pal­ve­lin­puo­len verk­ko­tun­nusoh­jauk­set to­teu­te­taan .htaccess-mää­ri­tys­tie­dos­ton tai PHP-skriptin avulla. Näiden me­ne­tel­mien avulla voidaan määrittää ta­paus­koh­tai­ses­ti, mikä HTTP-tilakoodi käyttäjän se­lai­mel­le näytetään. Näin verk­ko­si­vus­to­jen yl­lä­pi­tä­jät voivat merkitä verk­ko­tun­nusoh­jauk­set joko pysyviksi tai vä­liai­kai­sik­si. Tähän käytetään HTTP-ti­la­koo­de­ja 301 ja 302.

  • 301 – Siirretty pysyvästi: Pyydetty resurssi on nyt pysyvästi saa­ta­vil­la uu­del­lee­noh­jaus-URL:n alla. Vanha URL ei ole enää voimassa tästä lähtien. Tässä ta­pauk­ses­sa tarvitaan 301-uu­del­lee­noh­jaus.
  • 302 – Siirretty vä­liai­kai­ses­ti: Pyydetty resurssi on saa­ta­vil­la uu­del­lee­noh­jaus-URL:n alla. Toisin kuin 301-koodin ta­pauk­ses­sa, al­ku­pe­räi­nen URL pysyy edelleen voimassa.

Jos HTTP-ti­la­koo­dia ei ole ni­men­omai­ses­ti mää­ri­tel­ty, verk­ko­pal­ve­lin lähettää ti­la­koo­din 302 pal­ve­lin­puo­len uu­del­lee­noh­jauk­sen yh­tey­des­sä. Tämä ei ole aina vält­tä­mä­tön­tä, joten on suo­si­tel­ta­vaa syöttää haluttu tilakoodi ma­nu­aa­li­ses­ti jo­kai­sel­le uu­del­lee­noh­jauk­sel­le, sillä näin voidaan vähentää in­dek­soin­ti­vir­hei­den, kuten URL-kaap­pauk­sen, riskiä. Toisin kuin 301-uu­del­lee­noh­jaus, 302-tilakoodi ilmoittaa ha­ku­ro­bo­teil­le, että al­ku­pe­räi­nen URL-osoite tulee säilyttää in­dek­soi­tu­na. Jos uu­del­lee­noh­jauk­sen on tarkoitus olla pysyvä, uu­del­lee­noh­jauso­soi­te kilpailee uu­del­lee­noh­jauk­sen kohteen kanssa ha­ku­ko­neen in­dek­sis­sä.

.htaccess-uu­del­lee­noh­jaus

.htaccess on Apache-verk­ko­pal­ve­li­mil­le tar­koi­tet­tu ase­tus­tie­dos­to. Sitä käytetään ylit­tä­mään pal­ve­li­men yleiset asetukset ha­ke­mis­to­ta­sol­la. Tämän tiedoston avulla verk­ko­si­vus­to­jen yl­lä­pi­tä­jät voivat määrittää ha­ke­mis­to­koh­tai­sia asetuksia verk­ko­tun­nuk­sil­le ja niiden ali­ha­ke­mis­toil­le. Yksi .htaccess-tiedoston toi­min­nois­ta on yk­sit­täis­ten osoit­tei­den pal­ve­lin­puo­lei­nen uu­del­lee­noh­jaus muihin URL-osoit­tei­siin.

Voit määrittää verk­ko­tun­nuk­sen uu­del­lee­noh­jauk­sen .htaccess-tiedoston koodin avulla. Kun seuraavan koodin sisältävä .htaccess-tiedosto on si­joi­tet­tu pää­ha­ke­mis­toi­hin, al­ku­pe­räis­tä verk­ko­tun­nus­ta koskevat pyynnöt ohjataan pal­ve­lin­puo­lel­la verk­ko­tun­nuk­seen www.example.com:

Redirect 301 / http://www.example.com/
apac­heconf

Tämä koodirivi alkaa numerolla redirect 301 ja määrittää, minkä HTTP-ti­la­koo­din pal­ve­li­men tulee palauttaa. Sen jälkeen seuraa polku sisältöön, johon uu­del­lee­noh­jaus tehdään. Yllä olevassa esi­mer­kis­sä koko sisältö ohjataan uudelleen. Viimeinen vaihe suo­ri­te­taan, kun koko kohde-URL ohjataan käyt­tä­jä­agen­tin URL-osoit­tee­seen: http://www.example.com.

Tämän me­ne­tel­män avulla yk­sit­täi­siä tie­dos­to­ja voidaan ohjata uudelleen. Seuraava koodi esittää .htaccess-tiedoston avulla to­teu­te­tun uu­del­lee­noh­jauk­sen yhdeltä verk­ko­si­vus­tol­ta toiselle:

Redirect 301 /directory/example-document.html http://www.example.com/example.html
apac­heconf

Kun HTTP-tilakoodi 301 on mää­ri­tet­ty, mää­ri­te­tään tiedoston ha­ke­mis­to­pol­ku, joka ohjataan pysyvästi uudelleen (/directory/example-document.html), sekä uu­del­lee­noh­jaus-URL (http://www.example.com/example.html).

Tässä on esimerkki siitä, miltä pysyvä uu­del­lee­noh­jaus näyttäisi Apache-pal­ve­li­mel­la, jossa mod_rewrite-moduuli on käytössä:

RewriteEngine On
RewriteRule ^directory/example-document.html$ http://www.example.com/example.html [L,R=301]
apac­heconf

Koo­di­ri­vil­lä 01 ak­ti­voi­daan Apache-verk­ko­pal­ve­li­men mod_rewrite-moduuli ko­men­nol­la RewriteEngine On. Tämän jälkeen on rivi RewriteRule, jossa on uu­del­lee­noh­jaus­mää­ri­tys­tie­dos­ton polku ja koh­deo­soi­te. Caret- ja dol­la­ri­mer­kit mer­kit­se­vät polun alkua ja loppua, ja L merkitsee kyseisen pyynnön viimeistä mod_rewrite-sääntöä. R=301 välittää HTTP-ti­la­koo­din 301.

Kun määrität verk­ko­tun­nuk­sen uu­del­lee­noh­jaus­ta .htaccess-tiedoston avulla, on tärkeää muistaa, että vir­heel­li­set merkinnät voivat aiheuttaa vakavia seu­rauk­sia verk­ko­si­vus­ton toi­min­nal­le. Koska muutokset astuvat voimaan heti, kun olet tal­len­ta­nut .htaccess-tiedoston, asetukset on aina tes­tat­ta­va huo­lel­li­ses­ti.

PHP-uu­del­lee­noh­jauk­set

Verk­ko­tun­nuk­sen uu­del­lee­noh­jaus voidaan toteuttaa paitsi .htaccess-tiedoston asetusten kautta myös PHP-skriptin ko­men­nol­la (esim. *index.php-*tie­dos­tos­sa). Seuraava koodi esittää pysyvän uu­del­lee­noh­jauk­sen ku­vit­teel­li­seen kohde-URL-osoit­tee­seen www.example.com:

<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.example.com");
exit;
?>
php

Kun uu­del­lee­noh­jaus tapahtuu PHP-skriptin kautta, haluttu HTTP-tilakoodi mää­ri­te­tään koodin toisella rivillä olevalla header. Tässä esi­mer­kis­sä suo­ri­te­taan pysyvä 301-uu­del­lee­noh­jaus. Koska pal­ve­lin­puo­len uu­del­lee­noh­jauk­set to­teu­te­taan yleensä vä­liai­kai­ses­ti, pysyvien uu­del­lee­noh­jauk­sien suo­rit­ta­mi­sek­si 301-ti­la­koo­dil­la on ryh­dyt­tä­vä ak­tii­vi­siin toi­men­pi­tei­siin. Pysyvissä uu­del­lee­noh­jauk­sis­sa myös uu­del­lee­noh­jauk­sen koh­deo­soi­te re­kis­te­röi­dään headerllä. Tässä esi­mer­kis­sä uu­del­lee­noh­jaus menee osoit­tee­seen http://www.example.com. Koodin rivillä 04 oleva exit lopettaa skriptin ja estää seuraavan koo­di­ri­vin suo­rit­ta­mi­sen. Jotta uu­del­lee­noh­jauk­set toi­mi­si­vat PHP-skriptin kautta, koo­di­loh­kon on oltava HTML-sivun alussa. Tämä estää pal­ve­lin­ta siir­tä­mäs­tä HTML-sisältöä uu­del­lee­noh­jaus­si­vul­le.

Asia­kas­puo­len uu­del­lee­noh­jauk­set

Jos pal­ve­lin­puo­len verk­ko­tun­nuk­sen uu­del­lee­noh­jaus ei ole tek­ni­sis­tä syistä mah­dol­lis­ta, verk­ko­si­vus­to­jen yl­lä­pi­tä­jil­lä on mah­dol­li­suus käyttää asia­kas­puo­len rat­kai­su­ja. Tähän tar­koi­tuk­seen voidaan käyttää HTML-metatagiä refresh sekä Ja­vaSc­rip­tiä. Asia­kas­puo­len uu­del­lee­noh­jauk­sien hait­ta­puo­le­na on se, että pal­ve­li­met eivät lähetä HTTP-ti­la­koo­de­ja pyynnön esit­tä­neil­le se­lai­mil­le tai ha­ku­ro­bo­teil­le, minkä vuoksi niille ei ilmoiteta ni­men­omai­ses­ti uu­del­lee­noh­jauk­ses­ta. Lisäksi kaikki käyt­tä­jä­agen­tit eivät tue asia­kas­puo­len uu­del­lee­noh­jauk­sia, mikä tar­koit­taa, että on olemassa riski, että kaikkia verk­ko­si­vus­ton kävijöitä ei ohjata uudelleen.

Asia­kas­puo­len uu­del­lee­noh­jauk­set vai­kut­ta­vat kiel­tei­ses­ti ha­ku­ko­nei­den in­dek­soin­tiin. Asia­kas­puo­len uu­del­lee­noh­jauk­sis­sa ei tapahdu ni­men­omais­ta pois­sul­ke­mis­ta in­dek­soin­nis­ta HTTP-ti­la­koo­din 301 avulla. Tämä voi johtaa siihen, että uu­del­lee­noh­jaus­verk­ko­tun­nuk­set kil­pai­le­vat koh­de­verk­ko­tun­nus­ten kanssa ha­ku­ko­nei­den si­joi­tuk­sis­sa. Toisin kuin pal­ve­lin­puo­len uu­del­lee­noh­jauk­set, jotka pysyvät käyt­tä­jil­le suurelta osin nä­ky­mät­tö­mi­nä, asia­kas­puo­len uu­del­lee­noh­jauk­siin liittyy aina viiveitä, jotka jotkut käyttäjät saattavat huomata.

Uu­del­lee­noh­jaus HTML-koodin meta refresh -komennon avulla

HTML-me­ta­uu­del­lee­noh­jauk­set to­teu­te­taan meta-tun­nis­tei­den avulla, joissa on att­ri­buut­ti http-equiv. Tähän tarvitaan vain yk­sin­ker­tai­nen HTML-tiedosto ja vastaava tunniste sivun ot­sik­ko­koo­dis­sa uu­del­lee­noh­jauk­sen luo­mi­sek­si. Jotta verk­ko­si­vus­to­si kävijät saavat tiedon uu­del­lee­noh­jauk­ses­ta, HTML-tie­dos­toon tulisi lisätä vastaava ilmoitus. Tyy­pil­li­siä esi­merk­ke­jä ovat rivit kuten ”Odota hetki. Sinut ohjataan…”. Yk­sin­ker­tai­nen verk­ko­tun­nuk­sen uu­del­lee­noh­jaus HTML-me­ta­uu­dis­tuk­sen avulla näyttää tältä:

<meta http-equiv="refresh" content="10; url=http://www.example.com/">
html

Asiakasta pyydetään ohjaamaan verk­ko­tun­nus uudelleen meta-tagin avulla http-equiv="refresh". Tämä voidaan määrittää content-att­ri­buu­tin avulla. Esi­mer­kis­sä käyttäjät ohjataan koh­de­verk­ko­tun­nuk­seen www.example.com kymmenen sekunnin kuluttua.

Ja­vaSc­ript-uu­del­lee­noh­jauk­set

Ja­vaSc­ript tarjoaa helpon tavan toteuttaa verk­ko­tun­nuk­sen uu­del­lee­noh­jauk­sia asia­kas­puo­lel­la. Kuten meta-tagin refresh kohdalla, myös Ja­vaSc­ript-uu­del­lee­noh­jauk­sia tulisi kuitenkin käyttää vain ta­paus­koh­tai­ses­ti, sillä kaikki selaimet eivät tue tätä sk­rip­ti­kiel­tä tur­val­li­suus­syis­tä. Ja­vaSc­ript voi myös aiheuttaa ongelmia ha­ku­ro­bo­teil­le ja käyt­tä­jil­le, joilla on NoScript-laajennus käytössä. Tässä on esimerkki Ja­vaSc­ript-koodista verk­ko­tun­nuk­sen uu­del­lee­noh­jaus­ta varten:

<script> 
window.location.replace('http://www.example.com'); 
</script>
html

Tärkein asia tässä on koodin kolmas rivi. Esi­merk­ki­koo­dis­sa muuttujaa window.location käytetään viit­taa­maan nykyiseen verk­ko­si­vus­ton osoit­tee­seen. Komento replace ohjeistaa selaimen ohjaamaan käyttäjän suluissa olevaan koh­de­verk­ko­tun­nuk­seen: www.example.com.

Siirry pää­va­lik­koon