Hostaan Oy - suomalaiset Wordpress webhotellitHostaan Oy - suomalaiset Wordpress webhotellitHostaan Oy - suomalaiset Wordpress webhotellitHostaan Oy - suomalaiset Wordpress webhotellitHostaan Oy - suomalaiset Wordpress webhotellit

Tiedotteet:

.htaccess-tiedoston muokkaus: käytännön ohjeet

 

.htaccess on Apache-palvelimen hakemistokohtainen asetustiedosto. Tässä artikkelissa käydään läpi sen turvallinen muokkaaminen sekä käytännön esimerkkejä uudelleenohjauksista, pääsynhallinnasta ja virhesivuista. Muutokset tulevat voimaan heti, joten tiedostoa on muokattava huolellisesti: yksi kirjoitusvirhe tai palvelimen tukematon direktiivi voi aiheuttaa 500 Internal Server Error -virheen.

 

Hostaan-robotti WordPress-sivuston ja verkkopalvelimen vierellä

 

Tässä ohjeessa käydään läpi 301-uudelleenohjaukset, salasanasuojaus, mukautetut virhesivut ja hakemistolistauksen estäminen. Opit myös palauttamaan sivuston nopeasti, jos muutos epäonnistuu. Hostaanin WordPress-hosting-ympäristössä Plesk, päivittäiset varmuuskopiot ja staging-ympäristö helpottavat muutosten hallintaa ja testaamista.

 


Turvallinen .htaccess-tiedoston muokkaus ennen ensimmäistä muutosta

 

Hostaan-robotti esittelee asetustiedostoa ja palvelimen hakemistoja

 

Ennen kuin lisäät tai muutat yhtäkään riviä, tarvitset kolme asiaa: tiedät, missä tiedosto sijaitsee, osaat tehdä siitä varmuuskopion ja ymmärrät, miten testaat muutokset hallitusti.

Yhteensopivuushuomio: Esimerkit koskevat Apache-yhteensopivaa webhotellia, jossa tarvittavat moduulit ja AllowOverride -oikeudet ovat käytössä. Pelkkää Nginxiä käyttävä palvelin ei lue .htaccess-tiedostoja. Jos et tiedä, mitkä direktiivit liittymäsi sallii, tarkista palveluntarjoajan ohje tai kysy tuesta ennen muutosta.

 

Mistä tiedosto löytyy ja miten uusi tiedosto luodaan

.htaccess-tiedosto sijaitsee yleensä verkkosivustosi juurihakemistossa, esimerkiksi polussa /public_html/ tai /httpdocs/ . Tiedoston nimi alkaa pisteellä, minkä vuoksi se on oletuksena piilotettu useimmissa tiedostonhallintaohjelmissa ja FTP-ohjelmissa. FTP-ohjelmassa (esim. FileZilla) sinun täytyy erikseen kytkeä päälle piilotettujen tiedostojen näyttäminen.

 

Jos juurihakemistossa ei ole .htaccess-tiedostoa, voit luoda uuden tiedoston. Luo tyhjä tekstitiedosto, nimeä se täsmälleen .htaccess (ei tiedostopäätettä, ei välilyöntejä) ja siirrä se juurihakemistoon. WordPress voi luoda tai päivittää tiedoston, kun tallennat osoiterakenneasetukset, jos hakemistoon ja tiedostoon on kirjoitusoikeus. Muussa tapauksessa WordPress näyttää säännöt käsin kopioitaviksi. Tallenna itse luotu tiedosto tavallisena UTF-8-tekstinä ilman BOM-merkkiä.

 

Muokkaaminen Pleskissä tai FTP:llä

Plesk-hallintapaneelissa pääset muokkaamaan .htaccess-tiedostoa suoraan selaimessa:

  1. Avaa Plesk ja siirry kyseisen sivuston tiedostonhallintaan (File Manager).

  2. Navigoi juurihakemistoon.

  3. Klikkaa .htaccess-tiedostoa ja valitse "Edit in Code Editor" tai vastaava muokkaustoiminto.

  4. Tallenna muutokset ja testaa sivusto heti.

 

FTP:llä lataat tiedoston ensin omalle koneellesi, muokkaat sitä tavallisella tekstieditorilla (esimerkiksi Notepad++ tai VS Code) ja siirrät muokatun tiedoston takaisin palvelimelle. Varmista, että editori tallentaa tavallista UTF-8-tekstiä ilman BOM-merkkiä. Älä käytä tekstinkäsittelyohjelmaa tai rich text -editoria.

SSH-yhteydellä voit muokata tiedostoa suoraan palvelimella komentorivillä esimerkiksi nano - tai vim -editorilla. Tapa on suora, mutta vaatii komentorivityöskentelyyn tottumista.

 

Varmuuskopiointi, testaus ja yleisin 500-virheen syy

Varmuuskopioi .htaccess-tiedosto aina ennen muokkausta. Lataa kopio omalle koneellesi tai säilytä se julkisen document root -hakemiston ulkopuolella. Älä jätä suojaamatonta varmuuskopiota verkosta avattavaan hakemistoon. Näin voit palauttaa alkuperäisen tiedoston nopeasti, jos jokin menee vikaan.

500 Internal Server Error -virheen tavallinen syy on syntaksivirhe, palvelimen tukematon direktiivi tai puuttuva moduuli. Selain näyttää yleensä vain yleisen virhesivun, mutta Apachen virheloki kertoo usein ongelmallisen direktiivin ja rivin. Palauta varmuuskopio ensin, jos sivusto on saatava heti takaisin verkkoon.

Käytännössä testaus kannattaa tehdä näin:

  • Lisää .htaccess-tiedostoon yksi muutos kerrallaan.

  • Tallenna tiedosto ja avaa sivusto selaimessa heti.

  • Jos sivusto toimii, lisää seuraava muutos.

  • Jos saat 500-virheen, palauta varmuuskopio ja tarkista edellinen muutos rivi riviltä.

 

Hostaanin kaltaisessa ympäristössä staging-työkalu pienentää riskiä: voit kokeilla .htaccess-muutoksia kopioidussa ympäristössä ennen kuin viet ne tuotantoon. Koska staging- ja tuotantoympäristön asetukset voivat erota toisistaan, testaa tuotantosivusto uudelleen heti julkaisun jälkeen.

 


Yleisimmät .htaccess-käyttötavat käytännön esimerkeillä

Käytännössä .htaccess-tiedostoa tarvitaan usein uudelleenohjauksiin, hakemistojen ja tiedostojen suojaamiseen, salasanasuojaukseen, virhesivuihin sekä joihinkin suorituskykyasetuksiin. Alla olevat esimerkit ovat lähtökohtia: vaihda verkkotunnukset ja polut omiksesi, varmista tarvittavien Apache-moduulien saatavuus ja testaa yksi muutos kerrallaan.

 

301-uudelleenohjaus ja sivun uudelleenohjaus

Pysyvä 301-uudelleenohjaus kertoo selaimille ja hakukoneille, että resurssi on siirtynyt pysyvästi uuteen osoitteeseen. Se on vakiintunut valinta, kun vanhan URL-osoitteen tulee johtaa korvaavaan osoitteeseen.

Erilaiset uudelleenohjaussäännöt auttavat pitämään sivuston linkit toimivina ja arvon hakukoneissa ennallaan. Yksinkertaisin tapa on Redirect -direktiivi:

    Redirect 301 /vanha-sivu.html /uusi-sivu.html

Tämä ohjaa yksittäisen sivun uuteen osoitteeseen. Jos tarvitset uudelleenohjausta, joka käsittelee useita osoitteita kerralla, käytä RedirectMatch -direktiiviä säännöllisellä lausekkeella:

    RedirectMatch 301 ^/blogi/([0-9]{4})/(.*)$ /artikkelit/$2

Monimutkaisia uudelleenohjaussääntöjä varten tarvitset mod_rewrite -moduulin. Seuraava esimerkki ohjaa HTTP-liikenteen kiinteään HTTPS-osoitteeseen:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://www.example.fi%{REQUEST_URI} [R=301,L]

RewriteEngine On käynnistää mod_rewrite-moottorin, RewriteCond tarkistaa, onko HTTPS pois päältä, ja RewriteRule ohjaa kanoniseen osoitteeseen. Korvaa www.example.fi omalla verkkotunnuksellasi. Kiinteä nimi estää mielivaltaisen Host -otsakkeen luottamisen. Jos CDN tai reverse proxy päättää HTTPS-yhteyden ennen Apachea, käytä palveluntarjoajan suosittelemaa sääntöä ohjaussilmukan välttämiseksi.

Yleinen virhe: Uudelleenohjaussilmukat syntyvät, kun uudelleenohjaussääntö osoittaa takaisin samaan osoitteeseen. Varmista aina, että kohde-URL ei täytä samaa ehtoa uudelleen. Selain näyttää tällöin tyypillisesti "ERR_TOO_MANY_REDIRECTS"-virheen.

 

Hakemistojen suojaus ja tiedostojen estäminen

Jos et halua, että kävijät voivat selata palvelimesi hakemistorakennetta suoraan selaimessa, lisää .htaccess-tiedostoon:

    Options -Indexes

Tämä estää hakemistolistauksen näyttämisen. Voit myös määrittää oletustiedoston nimen käyttämällä DirectoryIndex-direktiiviä. Ilman näitä asetuksia kävijä voi nähdä kaikki hakemiston tiedostot, jos hakemistosta puuttuu index.html tai index.php .

Voit myös estää pääsyn tiettyihin tiedostoihin tai tiedostotyyppeihin FilesMatch -direktiivillä:

    <FilesMatch "(^\.ht|^wp-config\.php$|\.(ini|log|env)$)">
      Require all denied
    </FilesMatch>

Tämä Apache 2.4 -sääntö estää suoran pääsyn .htaccess-, .htpasswd-, wp-config.php-, .ini-, .log- ja .env-tiedostoihin. Ne voivat sisältää tunnuksia tai muita arkaluonteisia asetuksia.

Yksittäisen IP-osoitteen estäminen onnistuu näin:

    <RequireAll>
      Require all granted
      Require not ip 192.0.2.100
    </RequireAll>

 

Salasanasuojaus .htpasswd-tiedostolla

Salasanasuojaus on käytännöllinen tapa rajata pääsy esimerkiksi kehitysversion sivustolle, hallintapaneeliin tai yksittäiseen hakemistoon. Toteutus vaatii kaksi tiedostoa: .htaccess ja .htpasswd.

Lisää .htaccess-tiedostoon seuraavat rivit:

    AuthType Basic
    AuthName "Rajoitettu alue"
    AuthUserFile /var/www/vhosts/example.fi/.htpasswd
    Require valid-user

AuthType Basic kertoo, että käytetään perusautentikointia. AuthName on selaimessa näkyvä teksti. AuthUserFile osoittaa .htpasswd-tiedoston absoluuttiseen polkuun palvelimella. Require valid-user edellyttää kirjautumista kaikilta kävijöiltä.

.htpasswd-tiedosto sisältää käyttäjätunnukset ja salasanojen tiivisteet, yksi rivi per käyttäjä:

    kayttaja:$2y$...htpasswd-ohjelman-luoma-bcrypt-tiiviste...

Luo tiedosto ja bcrypt-tiiviste komennolla htpasswd -cB /polku/.htpasswd kayttaja . Käytä -c -valintaa vain tiedoston ensimmäisellä luontikerralla, sillä se tyhjentää olemassa olevan tiedoston. Lisää myöhemmin toinen käyttäjä komennolla htpasswd -B /polku/.htpasswd toinen-kayttaja . Pleskissä salasanasuojauksen voi usein ottaa käyttöön myös graafisesti.

Tärkeä huomio: Sijoita .htpasswd-tiedosto aina juurihakemiston ulkopuolelle tai suojaa se erikseen .htaccess-säännöllä, jotta kukaan ei voi ladata sitä selaimella.

 

Mukautettu 404- ja 403-virhesivu

Oletusvirhesivut ovat yleensä palvelimen geneerisiä tekstisivuja, jotka eivät kerro kävijälle mitään hyödyllistä. Mukautetulla virhesivulla voit ohjata kävijän takaisin oikeaan suuntaan ja pitää hänet sivustollasi.

404-virhesivu (sivua ei löydy):

    ErrorDocument 404 /404.html

403-virhesivu (pääsy estetty):

    ErrorDocument 403 /403.html

Luo vastaavat HTML-tiedostot sivustosi juurihakemistoon. 404.html-sivulle kannattaa lisätä navigaatio, hakutoiminto tai linkki etusivulle. WordPress-sivustoilla teema hoitaa 404-sivun automaattisesti, mutta .htaccess-tason ErrorDocument toimii varavaihtoehtona.

 

Suorituskyvyn parantaminen välimuistin ja pakkauksen avulla

Selaimen välimuisti voi vähentää staattisten tiedostojen uudelleenlatauksia. Seuraava esimerkki käyttää mod_expires -moduulia:

    <IfModule mod_expires.c>
      ExpiresActive On
      ExpiresByType text/css "access plus 7 days"
      ExpiresByType application/javascript "access plus 7 days"
      ExpiresByType image/* "access plus 30 days"
    </IfModule>

Tekstipohjaisten tiedostojen pakkaus onnistuu mod_deflate -moduulilla:

    <IfModule mod_deflate.c>
      AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json
    </IfModule>

Varmista moduulien saatavuus ennen käyttöä. Jos CDN, välimuistilisäosa tai palvelimen ylemmän tason asetus hoitaa välimuistin ja pakkauksen, päällekkäiset .htaccess-säännöt voivat olla tarpeettomia.

 


Mikä .htaccess on tarkalleen ottaen ja milloin sitä kannattaa käyttää

.htaccess on Apache-palvelimen hakemistokohtainen asetustiedosto. Sen avulla voit muuttaa palvelimen käyttäytymistä yksittäisen hakemiston tasolla ilman pääsyä Apachen pääkonfiguraatioon (httpd.conf tai apache2.conf). Tämä tekee siitä käytännöllisen työkalun webhotelliympäristöissä , joissa sinulla ei ole root-oikeuksia palvelimelle.

 

Kun .htaccess on käytössä, Apache etsii hakemistokohtaisia asetustiedostoja pyynnön yhteydessä. Muutokset tulevat voimaan heti ilman palvelimen uudelleenkäynnistystä, mutta tiedostojen etsiminen ja tulkitseminen aiheuttaa lisätyötä. Apache suosittelee siirtämään asetukset pääkonfiguraatioon, jos sinulla on siihen pääsy.

 

.htaccess on oikea työkalu silloin, kun:

  • Käytät webhotellia etkä pääse pääkonfiguraatioon.

  • Teet hakemistokohtaisia muutoksia, jotka eivät koske koko palvelinta.

  • Tarvitset nopeita muutoksia ilman palvelimen uudelleenkäynnistystä.

  • Haluat testata uudelleenohjauksia tai pääsynhallintaa yhdessä hakemistossa.

 

.htaccess ei ole oikea työkalu silloin, kun sinulla on pääsy pääkonfiguraatioon ja muutokset koskevat koko palvelinta. Tällöin suorituskyky ja ylläpidettävyys paranevat, kun asetukset ovat suoraan httpd.conf-tiedostossa.

 

Miten hakemistokohtaiset säännöt periytyvät

Apache käsittelee .htaccess-tiedostot hierarkkisesti. Kun kävijä pyytää sivua esimerkiksi osoitteesta /tuotteet/kengat/ , Apache lukee ensin juurihakemiston .htaccess-tiedoston, sitten /tuotteet/ -hakemiston .htaccess-tiedoston ja lopuksi /tuotteet/kengat/ -hakemiston .htaccess-tiedoston. Alempien hakemistojen säännöt voivat ylikirjoittaa ylempien hakemistojen säännöt.

 

Tämä toiminta riippuu Apachen pääkonfiguraation AllowOverride - ja AllowOverrideList -asetuksista. AllowOverride None poistaa .htaccess-tiedostojen käsittelyn käytöstä, kun taas muut arvot sallivat vain määritellyt direktiiviryhmät tai direktiivit. Sallitut asetukset ovat palveluntarjoajakohtaisia.

Käytännössä tämä tarkoittaa, että voit asettaa yleiset säännöt (kuten HTTPS-pakotuksen) juurihakemiston .htaccess-tiedostoon ja lisätä hakemistokohtaisia poikkeuksia alempiin hakemistoihin. Pidä rakenne yksinkertaisena: mitä vähemmän eri tasoilla on .htaccess-tiedostoja, sitä helpompi kokonaisuutta on ylläpitää ja vianselvitys on nopeampaa.

 


Usein kysytyt kysymykset

 

Missä .htaccess-tiedosto sijaitsee ja miten sen saa näkyviin palvelimella?

.htaccess-tiedosto sijaitsee tyypillisesti verkkosivustosi juurihakemistossa (esim. /public_html/ tai /httpdocs/ ). Koska tiedoston nimi alkaa pisteellä, se on oletuksena piilotettu useimmissa FTP-ohjelmissa ja tiedostojenhallinnassa. FTP-ohjelmassa (kuten FileZilla) kytke piilotettujen tiedostojen näyttäminen päälle asetuksista, ja Plesk-hallintapaneelissa valitse "Show Hidden Files" tiedostonhallinnassa.

 

Miten teen varmuuskopion ja palautan .htaccess-tiedoston, jos sivusto lakkaa toimimasta?

Ennen muokkausta lataa .htaccess-tiedostosta varmuuskopio omalle koneellesi tai tallenna se julkisen document root -hakemiston ulkopuolelle. Jos sivusto lakkaa toimimasta muutoksen jälkeen, korvaa muokattu tiedosto varmuuskopiolla FTP:n, Pleskin tiedostonhallinnan tai SSH:n kautta. Vältä suojaamattoman varmuuskopion jättämistä verkosta avattavaan hakemistoon.

 

Miten otan käyttöön pysyvät 301-uudelleenohjaukset oikein ilman uudelleenohjaussilmukoita?

Lisää .htaccess-tiedostoon Redirect 301 /vanha-polku /uusi-polku ja varmista, että uusi polku ei täytä samaa uudelleenohjausehtoa uudelleen. Silmukoita syntyy tyypillisesti silloin, kun RewriteRule ohjaa osoitteeseen, joka osuu samaan sääntöön uudelleen. Testaa jokainen uudelleenohjaus erikseen ja tarkista selaimen kehittäjätyökaluista, ettei pyyntö kierrä useita kertoja.

 

Miten estän tiettyjen IP-osoitteiden tai käyttäjäagenttien pääsyn sivustolle?

Apache 2.4:ssä yksittäisen IP-osoitteen voi estää <RequireAll> -lohkon sisällä riveillä Require all granted ja Require not ip 192.0.2.100 (korvaa osoite oikealla IP-osoitteella). Käyttäjäagentin estämiseen voi käyttää ehtoa RewriteCond %{HTTP_USER_AGENT} "BottiNimi" [NC] ja sen jälkeen sääntöä RewriteRule .* - [F,L] . Käyttäjäagentin nimi on kuitenkin helppo väärentää, joten sääntö ei korvaa varsinaista liikenteen- tai tietoturvan hallintaa.

 

Lisätietoa direktiiveistä ja sallituista konteksteista löydät Apachen virallisesta .htaccess-ohjeesta . Jos haluat varmistaa säännön ennen julkaisua, voit olla yhteydessä Hostaaniin .