.htaccess on suositun Apache-palvelinohjelmiston asetustiedosto. .htaccessin avulla voi esimerkiksi tehdä uudelleenohjauksia tai piilottaa tiedostoja.
.htaccess-tiedosto sijoitetaan aina siihen kansioon, johon sen halutaan vaikuttavan. Se vaikuttaa myös alikansioihin, ellei alikansioilla ole omaa .htaccess-tiedostoa. .htaccess-tiedostolla ei ole mitään varsinaista tiedostonimeä, vaan sen nimi koostuu pelkästä tiedostopäätteestä (.htaccess). Väärin nimetty .htaccess-tiedosto ei toimi.
.htaccess-tiedostoa luodessa kannattaa olla tarkka, että tekstieditorit tallentavat sen varmasti oikeaan muotoon.
Alla on määritetty alidomain siten, että osoitteessa www.esimerkki.esim/alidomain/ sijaitseva sivusto näkyy osoitteessa alidomain.esimerkki.esim.
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} alidomain.esimerkki.esim$
RewriteCond %{REQUEST_URI} !alidomain/
RewriteRule ^(.*)$ alidomain/$1
Useampien alidomainien määrittäminen onnistuu toistamalla yllä olevan pätkän kolme viimeistä riviä:
RewriteCond %{HTTP_HOST} alidomain2.esimerkki.esim$
RewriteCond %{REQUEST_URI} !alidomain2/
RewriteRule ^(.*)$ alidomain2/$1
Punaisella merkitty rivi kirjoitetaan .htaccess-tiedostoon vain kerran. Mikäli tiedostossa käytetään muita tällä sivulla esiintyviä määrittelyjä, joiden edessä on punaisella merkitty osuus, punaisen osuuden voi näistä jättää pois.
Index-tiedosto on tiedosto, joka kansioon (esimerkiksi www.esimerkki.esim/kansio/) mentäessä näkyy vierailijalle oletuksena. Yleensä tiedosto on oletuksena nimeltään index.esim (jossa "esim" on tiedostopääte, esimerkiksi .php tai .html). Mikäli index-tiedostoa ei ole, näytetään yleensä joko virhesivu tai tiedostolistaus.
.htaccessin avulla index-tiedoston voi vaihtaa. Tiedostoja voi määrittää useita: esimerkiksi alla pyydetään ensin tiedostoa apina.html, ja mikäli sitä ei ole, mansikka.html:ää. Mikäli tätäkään tiedostoa ei ole, näytetään index-tiedostona index.html.
DirectoryIndex apina.html mansikka.html index.html
.htaccessin avulla voidaan estää sivujen katseleminen tietyistä IP-osoitteista. Tämä onnistuu seuraavasti:
order allow,deny allow from all deny from ENSIMMÄINEN IP deny from TOINEN IP
"Allow from all" -rivi kertoo, että kaikki muut määritettyjä kahta IP:tä lukuun ottamatta pääsevät kansioon.
Määrityksiä voi käyttää myös päinvastoin. Alla on estetty kaikkien paitsi kahden IP:n pääsy kansioon:
order deny,allow deny from all allow from ENSIMMÄINEN IP allow from TOINEN IP
Mikäli IP-osoitteita ei ilmoiteta, kukaan ei pääse kansioon:
order deny,allow deny from all
Pääsyn voi estää myös vain tiettyihin tiedostoihin:
<Files tiedosto1 tiedosto2 tiedosto3> order deny,allow deny from all allow from ENSIMMÄINEN IP allow from TOINEN IP </Files>
Suoralinkityksen estäminen on .htaccessin avulla suhteellisen helppoa. Alla on ensin kielletty suoralinkitys, ja tämän jälkeen sallittu se kahdelle osoitteelle (www.esimerkki.esim ja alidomain.esimerkki.esim). Viimeisellä rivillä määritetään, mitä tiedostomuotoja suoralinkityksen esto koskee, ja kerrotaan tiedosto, joka lähetetään suoralinkittäjille oikean sijaan. Tiedoston osoitteen voi korvata viivalla (-), jolloin ei lähetetä mitään.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?esimerkki\.esim.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(alidomain\.)?esimerkki\.esim.*$ [NC]
RewriteRule \.(gif|GIF|jpg|JPG|png|bmp|css)$ http://www.esimerkki.esim/suoralinkitys.png [R,L]
Huomio! Muistathan sallia suoralinkityksen omille sivuillesi!
Punaisella merkitty rivi kirjoitetaan .htaccess-tiedostoon vain kerran. Mikäli tiedostossa käytetään muita tällä sivulla esiintyviä määrittelyjä, joiden edessä on punaisella merkitty osuus, punaisen osuuden voi näistä jättää pois.
Mikäli kansiolta puuttuu ns. index-tiedosto, vierailijoille näytetään yleensä joko listaus kansion sisällöstä tai virhesivu. .htaccessilla voidaan määrittää, kumpi näytetään.
Virhesivu:
Options -Indexes
Tiedostolistaus:
Options +Indexes
Mikäli koko tiedostolistauksen piilottaminen tuntuu liian radikaalilta, myös yksittäisen tiedoston voi piilottaa. Tällöin se ei näy esimerkiksi tiedostolistauksessa. Alla on piilotettu tiedostot mansikka.html, erkki.png ja hiiri.css:
IndexIgnore mansikka.html erkki.png hiiri.css
.htaccessin avulla voi käyttää useita erilaisia uudelleenohjauksia. Esimerkiksi alla on määritetty uudelleenohjaus tiedostosta sitruuna.html osoitteeseen http://www.esimerkki.esim/mansikka.html:
Redirect /sitruuna.html http://www.esimerkki.esim/mansikka.html
Mikäli tiedosto on siirretty pysyvästi toiseen osoitteeseen, tämän voi ilmaista myös .htaccessissa. Tämä auttaa esimerkiksi hakukoneita päivittämään osoitteitaan.
Redirect 301 /sitruuna.html http://www.esimerkki.esim/mansikka.html
tai
RedirectPermanent /sitruuna.html http://www.esimerkki.esim/mansikka.html
Uudelleenohjauksen voi toteuttaa myös niin kutsutulla mod_rewritellä. RewriteBase-kohdassa määritetään sen kansion polku, jossa .htaccess-tiedosto on (esimerkiksi /kansio viittaa osoitteeseen http://www.esimerkki.esim/kansio).
RewriteEngine On
RewriteBase /kansio
RewriteRule sitruuna\.html$ http://www.esimerkki.esim/mansikka.html
Kaikki kansion tiedostot voi myös siirtää samoilla nimillä toiseen osoitteeseen:
RewriteEngine On
RewriteBase /kansio
RewriteRule ^(.*)$ http://esimerkki.esim/$1
Punaisella merkitty rivi kirjoitetaan .htaccess-tiedostoon vain kerran. Mikäli tiedostossa käytetään muita tällä sivulla esiintyviä määrittelyjä, joiden edessä on punaisella merkitty osuus, punaisen osuuden voi näistä jättää pois.
.htaccessilla voidaan määrittää ns. virhesivuja, jotka näytetään sopivan virheen sattuessa. Yleisimmät virheet ovat 403 (oikeudet eivät riitä tiedoston tai osoitteen katseluun), 404 (tiedostoa ei löydy) ja 500 (palvelimen sisäinen virhe). Alla on määritetty, että virhe 403:n sattuessa näytetään tiedosto sivu1.html, virhe 404:n sattuessa sivu2.html ja virhe 500:n sattuessa sivu3.php.
ErrorDocument 403 /sivu1.html ErrorDocument 404 /sivu2.html ErrorDocument 500 /sivu3.php