301-uudelleenohjaus .htaccessilla
Kerromme, miten www-, HTTPS- ja vanhojen osoitteiden uudelleenohjaukset tehdään Apachessa .htaccessilla SEO-arvo säilyttäen, miten ne testataan ja miten silmukkavirheet ratkaistaan.

.htaccess-uudelleenohjausta varten Apachessa mod_rewriten on oltava päällä ja säännöt kirjoitetaan sivuston juurikansion .htaccess-tiedostoon RewriteEngine On -rivin jälkeen. Pysyvissä siirroissa käytetään R=301-lippua; näin selain ja hakukoneet siirtyvät uuteen osoitteeseen ja vanhan osoitteen sijoitusarvo säilyy suurelta osin. Testaa säännöt ensin komennolla curl -I.
Mikä on 301-uudelleenohjaus ja milloin sitä tarvitaan?
301-uudelleenohjaus on HTTP-vastaus, joka ilmoittaa osoitteen siirtyneen pysyvästi toiseen osoitteeseen. Selain vie kävijän automaattisesti uuteen osoitteeseen, ja hakukoneet korvaavat ajan myötä hakemistossa olevan vanhan osoitteen uudella.
302 ja 307 ovat puolestaan tilapäisiä uudelleenohjauksia; niitä käytetään lyhytaikaisissa tilanteissa, kuten kampanja- tai huoltosivuilla. Tilapäisen uudelleenohjauksen käyttö pysyvässä muutoksessa voi johtaa siihen, että hakukone pitää vanhan osoitteen hakemistossa.
Uudelleenohjauksen tarve syntyy yleensä seuraavissa tilanteissa: sivuston siirto HTTPS:ään, www-version ja ilman www:tä olevan version valinta, sivujen osoitteiden muuttaminen, verkkotunnuksen vaihto tai siirtyminen uuteen sivustoon. Sivustouudistuksissa vanhojen osoitteiden yksitellen yhdistäminen on hakukoneystävällisten verkkosivujen suunnittelun kriittisimpiä vaiheita.
Edellytykset: mod_rewrite ja AllowOverride
.htaccess-tiedosto toimii vain Apache- ja Apache-yhteensopivilla palvelimilla (kuten LiteSpeed). Nginx ei lue tätä tiedostoa; jos käytät Nginxiä, samat säännöt on kirjoitettava palvelinlohkoon, yksityiskohdat Nginxin asennusoppaassamme.
Jaetussa webhotellissa mod_rewrite on yleensä päällä ja voit siirtyä suoraan sääntöihin. Jos hallinnoit omaa palvelinta, sinun on otettava moduuli käyttöön ja avattava virtuaalipalvelimen asetuksissa AllowOverride-arvo; muuten Apache ohittaa .htaccess-tiedoston kokonaan.
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/ornek.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2<Directory /var/www/ornek.com/public_html>
AllowOverride All
Require all granted
</Directory>HTTPS- ja www-uudelleenohjaus
Sivusto voi avautua vähintään neljällä eri osoitteella: http ja https, www:n kanssa ja ilman. Selkein ratkaisu on valita näistä yksi pääosoite ja ohjata kolme muuta siihen yhdellä askeleella. Ketjutettu uudelleenohjaus (ensin HTTPS:ään, sitten www:hen) on sekä hidas että haaskaa indeksointibudjettia.
Varmista ennen HTTPS-uudelleenohjauksen käyttöönottoa, että palvelimella on voimassa oleva varmenne; asennus on kuvattu oppaassa SSL-varmenteen asennus. Jos HTTPS:ään ohjataan ilman varmennetta, kävijä saa tietoturvavaroituksen.
Miksi HTTPS ei ole enää valinta vaan pakko, ja millaisia varmennetyyppejä on, kerroimme tarkemmin artikkelissa mikä on SSL-varmenne. Kun olet valinnut pääosoitteesi, varmista, että kanoniset tunnisteet, sivustokartta ja sisäiset linkit käyttävät myös tätä osoitetta; muuten lähetät hakukoneelle ristiriitaisia signaaleja.
Pakota ilman www:tä oleva HTTPS-osoite
Alla oleva sääntö ohjaa pyynnön yhdellä kertaa https-osoitteeseen ilman www:tä, jos HTTPS on pois päältä tai osoite alkaa www:llä. Viimeinen ehto tallentaa verkkotunnuksen, ja %1 käyttää tätä tallennettua arvoa.
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]Pakota www:llä oleva HTTPS-osoite
Jos pääosoitteesi on www:llä oleva versio, kirjoita sääntö näin.
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,R=301]Vanhan sivun, kansion ja verkkotunnuksen siirto
Kun osoiterakenne muuttuu, jokainen vanha sivu on ohjattava sisällöltään lähimpään uuteen sivuun. Kaikkien vanhojen osoitteiden ohjaaminen etusivulle vaikuttaa helpolta, mutta hakukoneet tulkitsevat sen usein soft 404 -virheeksi ja vanhan sivun arvo menetetään.
Sääntöjen järjestyksellä on väliä: erityissäännöt ylhäällä, yleiset säännöt alhaalla. Apache käsittelee säännöt ylhäältä alas, ja L-lippu pysäyttää kyseisen kierroksen käsittelyn osuneen säännön jälkeen.
Aloita suurissa siirroissa laatimalla uudelleenohjauskartta: taulukkoon vasemmalle vanha osoite, oikealle uusi osoite ja viereen sivun saama liikenne ja linkkien määrä. Tämä lista ohjaa sinua sekä sääntöjä kirjoittaessa että julkaisun jälkeen yksitellen tarkistaessa. Sivuille, joilla ei ole vastinetta ja jotka todella poistetaan, 410- tai 404-vastaus on uudelleenohjausta rehellisempi signaali.
- Yksinkertaisissa yhden sivun siirroissa voi käyttää myös mod_aliasin Redirect 301 -riviä, mutta sen sekoittamatta jättäminen RewriteRule-sääntöihin samassa tiedostossa estää järjestykseen liittyvät yllätykset.
- Kokoa vanhojen osoitteiden luettelo Search Consolesta ja vanhasta sivustokartasta; älä jätä yhtään tärkeää sivua pois.
- Käytä verkkotunnuksen vaihdossa myös Search Consolen Osoitteenmuutos-työkalua.
RewriteEngine On
# Tek sayfa
RewriteRule ^eski-sayfa\.html$ /yeni-sayfa/ [R=301,L]
# Kansion siirto: /haberler/... -> /blog/...
RewriteRule ^haberler/(.*)$ /blog/$1 [R=301,L]
# Uudelleenohjaus ilman kyselymerkkijonoa
RewriteCond %{QUERY_STRING} ^id=15$
RewriteRule ^urun\.php$ /urunler/deri-canta/ [R=301,L,QSD]
# Verkkotunnuksen vaihto (vanhan verkkotunnuksen .htaccess-tiedostossa)
RewriteCond %{HTTP_HOST} ^(www\.)?eskialan\.com$ [NC]
RewriteRule ^(.*)$ https://yenialan.com/$1 [R=301,L].html-päätteen poistaminen
Staattisilla sivustoilla voit haluta käyttää siistejä osoitteita, kuten /hakkimizda, osoitteen /hakkimizda.html sijaan. Siihen tarvitaan kaksi sääntöä: toinen ohjaa päätteelliset pyynnöt 301:llä päätteettömään osoitteeseen, toinen yhdistää päätteettömän pyynnön taustalla vastaavaan .html-tiedostoon.
Ensimmäisessä säännössä %{THE_REQUEST}:n käyttö on tärkeää; tämä muuttuja säilyttää selaimen lähettämän alkuperäisen pyynnön ja estää sisäistä uudelleenkirjoitusta muuttumasta takaisin uudelleenohjaukseksi ja luomasta päättymätöntä silmukkaa.
RewriteEngine On
# /sayfa.html -> /sayfa (301)
RewriteCond %{THE_REQUEST} \s/([^.\s]+)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]
# Yhdistä /sayfa-pyyntö tiedostoon sayfa.html (sisäinen uudelleenkirjoitus)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L]Miten testaan uudelleenohjaukset?
Selaimet tallentavat 301-vastauksen välimuistiin. Kun korjaat virheellisen säännön, selaimesi voi edelleen muistaa vanhan uudelleenohjauksen; käytä siksi testauksessa ensin R=302 ja vaihda 301:ksi, kun kaikki on kunnossa. Luotettavinta on testata yksityisessä ikkunassa tai komentoriviltä.
curl-komento näyttää selvästi vastauskoodin ja Location-otsikon. -L-parametrilla voit seurata koko ketjun ja, jos vaiheita on useita, supistaa ne yhdeksi uudelleenohjaukseksi.
- Kirjoita Windows PowerShellissä curlin sijaan curl.exe; muuten voi suorittua toinen komento.
- Paikallisesti voit kokeilla Apachen sisältävällä paketilla, kuten XAMPPilla.
- Seuraa julkaisun jälkeen Search Consolen uudelleenohjaus- ja indeksointiraportteja muutaman viikon ajan.
curl -I http://www.ornek.com/eski-sayfa.html
# Koko ketjun näkemiseksi
curl -sIL http://ornek.com | grep -iE '^(HTTP|location)'Yleiset virheet ja ratkaisut
Useimmat uudelleenohjausongelmat ilmenevät muutamina tuttuina oireina. Apachen virheloki (Ubuntussa /var/log/apache2/error.log) kertoo yleensä, missä rivissä ongelma on.
| Oire | Todennäköinen syy ja ratkaisu |
|---|---|
| 500 Internal Server Error | Kirjoitusvirhe tai mod_rewrite on pois päältä; peru viimeksi lisätty rivi ja katso virhelokia. |
| ERR_TOO_MANY_REDIRECTS | Säännöt ohjaavat toisiinsa tai HTTPS:ää ei tunnisteta välityspalvelimen takana. |
| Sääntö ei toimi lainkaan | AllowOverride None tai tiedosto on väärässä kansiossa; tarkista virtuaalipalvelimen asetus. |
| Uusi osoite antaa 404 | Kohdepolku on väärin tai kirjoitettu suhteellisena; lisää kohteen alkuun /. |
| Korjaus ei näy | Selain käyttää vanhaa 301:tä välimuistista; testaa yksityisessä ikkunassa tai curlilla. |
Cloudflaren tai kuormantasaajan takana
Jos SSL päättyy välityspalvelimessa, palvelimelle tuleva pyyntö näyttää aina HTTP:ltä ja %{HTTPS} off -ehto johtaa päättymättömään silmukkaan. Tarkista tällöin välityspalvelimen lähettämä X-Forwarded-Proto-otsikko tai tee HTTPS-uudelleenohjaus välityspalvelimen paneelista.
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Usein kysytyt kysymykset
01Siirtääkö 301-uudelleenohjaus SEO-arvon kokonaan?
Oikeaan kohteeseen tehty pysyvä uudelleenohjaus siirtää suurimman osan vanhan osoitteen signaaleista uudelle osoitteelle. Siirtymäkaudella sijoituksissa voi silti näkyä tilapäistä vaihtelua; sisällöltään vastaamattomiin kohteisiin tehdyt uudelleenohjaukset sen sijaan johtavat arvon menetykseen.
02Kuinka kauan uudelleenohjauksia pitäisi pitää?
Älä poista uudelleenohjauksia niin kauan kuin muut sivustot linkittävät vanhoihin osoitteisiin. Käytännössä turvallisin tapa on pitää ne vähintään vuosi ja tärkeiden sivujen osalta toistaiseksi.
03Tarvitaanko uudelleenohjausta myös loppukauttaviivalle?
Hakukoneet voivat nähdä osoitteet /hakkimizda ja /hakkimizda/ erillisinä sivuina. Kun päätät, kumpaa käytät, ja ohjaat toisen siihen 301:llä, sama sisältö ei päädy hakemistoon kahdella osoitteella. Tärkeää on, että valinta on johdonmukainen koko sivustolla.
04Hidastaako suuri määrä uudelleenohjauksia sivustoa?
Muutaman sadan rivin sääntöjoukko ei aiheuta havaittavaa hidastumista, mutta koska .htaccess luetaan jokaisella pyynnöllä, tuhannet rivit tuovat lisäkuormaa. Tällä mittakaavalla sääntöjen siirtäminen virtuaalipalvelimen kokoonpanoon tai RewriteMapilla yhdistämistiedostoon on tehokkaampaa.
Oikein tehdyt 301-uudelleenohjaukset varmistavat, ettei työsi ja liikenteesi katoa osoitteen muuttuessa. Jos haluat hoitaa sivustouudistuksen yhteydessä vanhojen osoitteiden yhdistämisen, uudelleenohjaukset ja tekniset SEO-tarkistukset yhdessä, tutustu hakukoneystävälliset verkkosivut -palveluumme, ja julkaisun jälkeisiin nopeusparannuksiin nopeus- ja suorituskykyoptimointi -palveluumme. Hakutietojesi säännölliseen seurantaan voit hyödyntää myös SEO ja analytiikka -tukeamme, ja verkkokauppa-alustan siirtoprojekteissa voit työskennellä verkkosivutiimimme kanssa.


