Siirry suoraan sisältöön

Mikä on .htaccess-tiedosto? Yleisimmät säännöt ja esimerkit

Kuvitus, jossa selaimen pyynnöt kulkevat public_html-kansion piilotetun .htaccess-tiedoston sääntöjen läpi: http-pyyntö ohjataan suojattuun https-yhteyteen, vanha sivu uudelleenohjataan 301-ohjauksella uuteen osoitteeseen ja ylläpitohakemistoon pääsy estetään puomilla ja 403-virheellä.

Table of Contents

Jos olet muokannut verkkosivustoasi, törmäät ennemmin tai myöhemmin tiedostoon nimeltä .htaccess. Se on pieni mutta tehokas asetustiedosto, jolla hallitaan Apache-verkkopalvelimen toimintaa – esimerkiksi uudelleenohjauksia, HTTPS-pakotusta ja hakemistojen suojausta. Tässä oppaassa käydään selkokielisesti läpi mikä .htaccess on, miten se toimii, missä se sijaitsee ja mitkä ovat yleisimmät säännöt valmiine esimerkkeineen.

Mikä .htaccess-tiedosto on?

.htaccess on lyhenne sanoista hypertext access. Kyseessä on hakemistokohtainen asetustiedosto, jota Apache-pohjaiset verkkopalvelimet käyttävät. Kun tiedosto sijoitetaan verkkosivuston kansioon, sen sisältämät säännöt vaikuttavat kyseiseen kansioon ja kaikkiin sen alikansioihin.

Tiedoston erikoisuus on sen nimi: se alkaa pisteellä eikä sillä ole varsinaista tiedostopäätettä. Pisteellä alkava nimi tekee tiedostosta monissa käyttöjärjestelmissä piilotiedoston, joten se ei näy oletusarvoisesti kansiossa. Sisällöltään tiedosto on tavallista tekstiä, jossa jokainen rivi on yksi palvelimen ymmärtämä komento eli direktiivi.

.htaccess-tiedoston avulla voit muuttaa palvelimen käyttäytymistä ilman pääsyä palvelimen pääasetustiedostoon (httpd.conf). Juuri tämä tekee siitä arvokkaan jaetussa webhotellissa, jossa sinulla ei ole oikeuksia palvelimen pääasetuksiin. Jos et vielä tunne käsitettä, lue ensin perusteet siitä mitä webhotelli tarkoittaa ja miten sivustosi tiedostot sijaitsevat palvelimella.

Pikafaktat

Tiedoston nimi.htaccess (hypertext access)
TyyppiHakemistokohtainen asetustiedosto
PalvelinApache (ei Nginx)
SijaintiVerkkosivuston juurikansio, usein public_html
MuokkausHallintapaneelin tiedostonhallinta tai FTP
VoimaantuloVälittömästi, ilman palvelimen uudelleenkäynnistystä
Yleisimmät käytötUudelleenohjaukset, HTTPS-pakotus, virhesivut, suojaus
RiskiKirjoitusvirhe voi aiheuttaa 500-virheen – ota varmuuskopio

Miten .htaccess toimii?

Toisin kuin palvelimen pääasetukset, jotka ladataan kerran palvelimen käynnistyksen yhteydessä, .htaccess luetaan jokaisella sivupyynnöllä uudelleen. Käytännössä Apache tarkistaa jokaisen pyydetyn tiedoston kohdalla, löytyykö pyydetyn kansion ja kaikkien sen yläpuolella olevien kansioiden polulta .htaccess-tiedostoa, ja soveltaa niistä löytyvät säännöt.

Tämä tuo sekä hyödyn että haitan. Hyöty on joustavuus: muutokset astuvat voimaan välittömästi, eikä palvelinta tarvitse käynnistää uudelleen. Haitta on suorituskyky: koska tiedostot haetaan jokaisella pyynnöllä, niiden käyttö kuormittaa palvelinta hieman enemmän kuin pääasetustiedostoon kirjoitetut säännöt. Isojen sivustojen ylläpitäjä, jolla on pääsy palvelimen pääasetuksiin, kannattaakin sijoittaa säännöt sinne. Tavalliselle webhotelliasiakkaalle .htaccess on kuitenkin käytännössä ainoa ja täysin toimiva tapa.

AllowOverride ratkaisee, toimiiko tiedosto

.htaccess-tiedostoa luetaan vain, jos palvelimen ylläpitäjä on sen sallinut AllowOverride-asetuksella. Jos asetus on None, tiedostot ohitetaan kokonaan. Suurin osa suomalaisista webhotelleista sallii .htaccess-tiedostojen käytön oletuksena, joten tavallisen käyttäjän ei tarvitse huolehtia tästä. Sama asetus määrittää myös, minkä tyyppisiä sääntöjä tiedostossa saa käyttää – esimerkiksi uudelleenohjaukset ja salasanasuojaus ovat lähes aina sallittuja.

Missä .htaccess sijaitsee ja miten sitä muokataan?

Tiedosto sijaitsee tyypillisesti verkkosivuston juurikansiossa, joka on usein nimeltään public_html tai www. Samaan sivustoon voi kuulua useampia .htaccess-tiedostoja eri alikansioissa: alemman kansion tiedosto voi tarvittaessa kumota ylempää perityt säännöt.

Tiedoston muokkaamiseen on kaksi yleistä tapaa:

  • Hallintapaneelin tiedostonhallinta. Useimmissa webhotelleissa on selaimessa toimiva tiedostonhallinta. Jos palvelusi käyttää cPanel-hallintapaneelia, muista ottaa tiedostonhallinnan asetuksista käyttöön piilotiedostojen näyttäminen, jotta .htaccess tulee näkyviin.
  • FTP-yhteys. Voit ladata, muokata ja palauttaa tiedoston omalle koneellesi FTP-yhteyden avulla. Aseta FTP-ohjelmasi näyttämään piilotiedostot, muuten tiedosto ei näy listassa.

Jos tiedostoa ei ole vielä olemassa, voit luoda sen itse. Luo tavallinen tekstitiedosto, nimeä se tarkalleen muotoon .htaccess (ilman päätettä) ja tallenna se juurikansioon. Ota aina varmuuskopio ennen muokkaamista: pienikin kirjoitusvirhe voi kaataa koko sivuston. Varmista, että sinulla on toimiva varmuuskopio sivustosta ennen kuin teet muutoksia.

Yleisimmät .htaccess-säännöt ja esimerkit

Alla on tavallisimmat käyttötarkoitukset selityksineen ja valmiine esimerkkeineen. Voit kopioida rivit sellaisenaan ja muokata osoitteet omiksesi. Alla oleva taulukko kokoaa säännöt nopeaan vilkaisuun.

Yleisimmät säännöt

KäyttötarkoitusMitä sääntö tekee
301-uudelleenohjausOhjaa vanhan osoitteen pysyvästi uuteen ja siirtää hakukonearvon
HTTPS-pakotusOhjaa kaikki kävijät salattuun HTTPS-yhteyteen
www-yhtenäistäminenVarmistaa, että sivusto vastaa vain www- tai ei-www-muodossa
Mukautettu virhesivuNäyttää oman 404- tai 403-sivun palvelimen oletuksen sijaan
SalasanasuojausKysyy tunnuksen ja salasanan ennen kansion näyttämistä
Tiedoston tai IP:n estoEstää pääsyn tiettyyn tiedostoon tai yksittäiseltä IP-osoitteelta
Hakemistolistauksen estoPiilottaa kansion tiedostolistauksen kävijöiltä

Uudelleenohjaukset (301-ohjaus)

Uudelleenohjaus eli redirect ohjaa kävijän osoitteesta toiseen. Koodi 301 tarkoittaa pysyvää siirtoa, ja se kertoo myös hakukoneille, että sivu on muuttanut pysyvästi – tällöin osoitteen hakukonearvo siirtyy uuteen osoitteeseen. Yhden sivun ohjaus tehdään näin:

  • Redirect 301 /vanha-sivu.html https://sivustosi.fi/uusi-sivu.html

301-ohjaukset ovat erityisen tärkeitä, kun sivuston rakenne muuttuu tai kun teet verkkosivuston siirron toiselle palvelimelle, jotta vanhat linkit eivät johda virhesivulle.

HTTPS-pakotus

Jos haluat ohjata kaikki kävijät suojattuun HTTPS-yhteyteen, voit pakottaa sen .htaccess-tiedostossa. Tämä edellyttää, että sivustollasi on voimassa oleva SSL-varmenne. Säännöt käyttävät Apachen mod_rewrite-moduulia:

  • RewriteEngine On
  • RewriteCond %{HTTPS} off
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ensimmäinen rivi käynnistää uudelleenkirjoitusmoottorin, toinen tarkistaa onko yhteys salaamaton ja kolmas ohjaa pyynnön vastaavaan HTTPS-osoitteeseen pysyvällä 301-ohjauksella.

www-osoitteen yhtenäistäminen

Hakukoneiden kannalta on hyvä, että sivusto vastaa vain yhdessä muodossa – joko www-alkuisena tai ilman. Seuraava sääntö ohjaa www-alkuiset osoitteet ilman www-etuliitettä olevaan versioon:

  • RewriteEngine On
  • RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  • RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

Jos haluat päinvastaisen lopputuloksen eli www-muodon kanonisena, logiikka käännetään toisin päin.

Mukautettu virhesivu (404)

Kun kävijä päätyy olemattomaan osoitteeseen, palvelin näyttää oletuksena karun 404-virheilmoituksen. Voit määrittää tilalle oman, sivuston ulkoasuun sopivan virhesivun:

  • ErrorDocument 404 /virhe404.html

Samalla tavalla voit määrittää omat sivut muillekin virhekoodeille, kuten 403 (pääsy estetty) tai 500 (palvelinvirhe).

Hakemiston suojaus salasanalla

Voit suojata kansion kysymällä käyttäjätunnuksen ja salasanan ennen sisällön näyttämistä. Tämä vaatii kaksi tiedostoa: .htaccess-tiedoston säännöt ja erillisen .htpasswd-tiedoston, joka sisältää salatut salasanat. .htaccess-tiedostoon tulevat rivit ovat muotoa:

  • AuthType Basic
  • AuthName ”Suojattu alue”
  • AuthUserFile ”/polku/palvelimella/.htpasswd”
  • Require valid-user

AuthUserFile-rivillä annetaan .htpasswd-tiedoston tarkka polku palvelimella. Monet hallintapaneelit tarjoavat tähän valmiin ”salasanasuojatut hakemistot” -työkalun, joka luo molemmat tiedostot puolestasi.

Pääsyn estäminen yksittäisiin tiedostoihin

Joskus on tarpeen estää kävijöiltä pääsy tiettyyn tiedostoon, kuten asetustiedostoon. Apache 2.4 -versiossa tämä tehdään näin (kulmasulkeet kuuluvat sääntöön):

  • <Files ”.env”>
  • Require all denied
  • </Files>

Voit myös estää yksittäisen IP-osoitteen pääsyn sivustolle. Seuraava sääntö sallii kaikki paitsi nimetyn osoitteen:

  • <RequireAll>
  • Require all granted
  • Require not ip 203.0.113.5
  • </RequireAll>

Hakemistolistauksen estäminen

Jos kansiossa ei ole etusivutiedostoa, Apache saattaa näyttää kävijälle listan kansion tiedostoista. Tämä voi paljastaa tiedostoja, joita ei ole tarkoitettu näkyviin. Listaus estetään yhdellä rivillä:

  • Options -Indexes

WordPress ja .htaccess

WordPress käyttää .htaccess-tiedostoa osoitteiden siistimiseen (permalink-rakenne). Kun otat käyttöön selkeät osoitteet, WordPress lisää tiedostoon automaattisesti oman lohkonsa, joka on merkitty riveillä # BEGIN WordPress ja # END WordPress. Älä muokkaa näiden rivien välissä olevaa osaa käsin, vaan lisää omat sääntösi lohkon ulkopuolelle. Lohkon tyypillinen sisältö on:

  • RewriteEngine On
  • RewriteBase /
  • RewriteRule ^index\.php$ – [L]
  • RewriteCond %{REQUEST_FILENAME} !-f
  • RewriteCond %{REQUEST_FILENAME} !-d
  • RewriteRule . /index.php [L]

Jos sivustosi toimii WordPress-webhotellissa, voit yleensä luoda tiedoston uudelleen pelkästään tallentamalla osoiterakenteen asetukset uudelleen WordPressin hallinnasta.

Yleisimmät virheet ja hyvät käytännöt

.htaccess on tehokas mutta herkkä työkalu. Pidä mielessä seuraavat asiat:

  • 500 Internal Server Error. Yleisin virhe .htaccess-muokkauksen jälkeen on koko sivuston kaatuminen 500-virheeseen. Syynä on lähes aina kirjoitusvirhe tai palvelimella pois käytöstä oleva moduuli. Palauta tällöin varmuuskopio tai poista viimeksi lisäämäsi rivit.
  • Ota aina varmuuskopio. Kopioi alkuperäinen tiedosto talteen ennen muokkaamista, jotta voit palauttaa toimivan version nopeasti.
  • Tiedosto toimii vain Apachessa. .htaccess on Apache-palvelimen ominaisuus. Nginx-palvelin ei lue .htaccess-tiedostoa lainkaan, vaan vastaavat säännöt kirjoitetaan palvelimen omaan asetustiedostoon. Tarkista webhotellisi palvelinohjelmisto, jos säännöt eivät näytä toimivan.
  • Testaa muutokset. Tarkista jokaisen muutoksen jälkeen, että sivusto latautuu normaalisti ja että ohjaukset vievät oikeaan osoitteeseen.

Usein kysytyt kysymykset (FAQ / UKK)

Voiko .htaccess-tiedoston nimen vaihtaa?

Teknisesti kyllä. Palvelimen ylläpitäjä voi vaihtaa käytettävän tiedoston nimen AccessFileName-asetuksella, mutta tätä ei suositella eikä se ole tavallisessa webhotellissa mahdollista. Käytä siis aina nimeä .htaccess.

Tarvitseeko jokaiseen kansioon oman .htaccess-tiedoston?

Ei tarvitse. Juurikansion tiedoston säännöt periytyvät automaattisesti kaikkiin alikansioihin. Oma tiedosto kannattaa luoda alikansioon vain, jos haluat sille erilaiset säännöt kuin muulle sivustolle.

Hidastaako .htaccess sivustoa?

Vaikutus on hyvin pieni. Koska palvelin lukee tiedoston jokaisella pyynnöllä, se kuormittaa teoriassa enemmän kuin pääasetuksiin kirjoitetut säännöt. Tavallisella sivustolla ero on käytännössä merkityksetön, joten webhotelliasiakkaan ei tarvitse huolehtia siitä.

Mistä tiedän, käyttääkö palvelimeni Apachea vai Nginxiä?

Helpoin tapa on kysyä webhotellisi asiakaspalvelusta tai tarkistaa palvelun ohjesivuilta. Jos .htaccess-tiedoston säännöt vaikuttavat sivuston toimintaan, palvelin käyttää Apachea. Monet palvelut käyttävät myös näiden yhdistelmää, jolloin .htaccess toimii normaalisti.

More To Explore