Htaccess on oikeastaan helppoa: teet vain Muistiolla (tai jollain muulla tekstieditorilla) tiedoston jonka nimeksi annetaan .htaccess ja kirjoitat itse koodin tähän tiedostoon. Jos esimerkiksi haluat htaccess-tiedoston, jonka sisälle tulee "deny from all" (ilman lainausmerkkejä), niin ruutusi pitäisi näyttää tältä:
Jos olet jo aiemmin leikkinyt htaccessilla, olet saattanut huomata, ettei htaccess-tiedostoja voi katsella selaimessa. Yleensä kaikki ".ht" - merkkijonolla alkavat tiedostot piilotetaan valmiiksi muilta, mutta jos näin ei ole, sen voi korjata todella helposti lisäämällä tämän sivusi pääkansion (yleensä public_html) htaccess-tiedostoon:
- Koodi: Valitse kaikki
<Files ~ "\.ht">
deny from all
</Files>
Edellinen koodi yksinkertaistettuna piilottaa selaimelta kaikki tiedostot, joiden nimi alkaa merkkijonolla ".ht" ja generoi virhekoodin 403.
Pääsyn estäminen
Aiempi esimerkki näyttää, miten voi estää pääsyn yhteen tiedostoon, mutta miten estää pääsy tiettyyn kansioon vain tietyiltä IP-osoitteilta? Näin:
- Koodi: Valitse kaikki
order deny, allow
#määritellään järjestys, ettei vahingossa deny salli pääsyä ja allow estä sitä.
deny from ip.tähän.xxx
#estetään tietty ip-osoite
Mutta entä jos haluat olla ainoa henkilö, joka pääsee käsiksi tiedostoihin? Vaikka näin:
- Koodi: Valitse kaikki
order deny, allow
# ...
allow from ip-osoitteesi.tähän.xxx.yyy.zzz
#sallii pääsyn sinun osoitteestasi
deny from all
#estetään pääsy kaikilta ip-osoitteilta
Ylläoleva on kätevää jos sinulla on esimerkiksi kansio, jossa on tuleva huippusalainen projektisi, jota vain sinä saat testata kunnes se on valmis.
Osoitteiden siistiminen
Oletko joskus törmännyt osoitteeseen, joka on tyyliä http://www.sivusto.com/hilavitkuttimet/vari/punainen/valmistaja/harrin-neonvihreat/? Tällainen on todella helppo tehdä:
- Koodi: Valitse kaikki
RewriteEngine On
Options +FollowSymLinks
rewriterule ^hilavitkuttimet/vari/([^/]*)/valmistaja/([^/]*)/$ hilavitkuttimet.php?vari=$1&valmistaja=$2
Jo et ole ennen tällaista tehnyt, et varmaankaan tajua tuosta höykäsen pöläystä, joten selitetäänpä vähän:
- RewriteEngine On asettaa URL-osoitteiden uudelleenkirjoittamisen päälle.
- Options +FollowSymLinks sallii symboliset linkit.
- rewriterule ^hilavitkuttimet/vari/([^/]*)/valmistaja/([^/]*)/$ hilavitkuttimet.php?vari=$1&valmistaja=$2 kirjoittaa URL-osoitteen mukavempaan muotoon. Kaikki "siansaksa" sulkumerkkien sisässä ovat säännöllisiä lausekkeita, ja ilman sulkuja näitä tekstinpätkiä ei "työnnettäisi" muuttujaan. Edellinen koodi siis yksinkertaisesti avaa hilavitkuttimet.php-nimisen tiedoston mutta näyttää sen selaimen osoite-laatikossa eri nimellä. Kuitenkin kaikki tiedot voidaan lähettää PHP:lle helposti.
Vielä yksinkertaisempi esimerkki:
- Koodi: Valitse kaikki
rewriterule ^(.*)\.html$ $1.php [nc]
Tämä lähettää kaikki pyynnöt mikälie.html-tiedostosta mikälie.php-tiedostoon. Käytännössä kaikki php-päätteiset tiedostot ovat nyt mahdollista selata myös html-päätteellä.
Sekalaista
Tässä on sitten kaikenlaista sekalaista htacces-sälää. En ole pitemmin selitellyt näitä, vaan pelkästään kommentoinut.
Hotlinkkauksen esto
- Koodi: Valitse kaikki
rewritecond %{HTTP_REFERER} !^$
#varmistetaan että edellinen sivu on olemassa
rewritecond %{HTTP_REFERER} !^http://(.*)\.sivusi\.com/ [nc]
#jos edellinen sivu, joka pyytää kuvaa on jokin muu kuin sinun sivusi...
rewriterule .*\.(jpe?g|gif|bmp|png|wbmp)$ http://www.sivusi.com/hotlink.gif [nc]
#...korvataan pyydetty kuva jollain muulla kuvalla.
Siistimpi 404-virhesivu
- Koodi: Valitse kaikki
rewritecond %{REQUEST_FILENAME} !-f
#jos nykyinen osoite ei ole olemassa oleva tiedosto...
rewritecond %{REQUEST_FILENAME} !-d
#...tai kansio...
rewriterule .* http://sivusi.com/404.php
#...korvataan osoite 404-dokumentilla.
404.php voisi näyttää tältä:
- Koodi: Valitse kaikki
<h1><?= end ( explode ( "/", $_SERVER["REQUEST_URI"] ) ); ?>-nimistä tiedostoa ei löydy.</h1>
Www-alku pois
- Koodi: Valitse kaikki
rewritecond %{HTTP_HOST} ^www\.sivu\.com [nc]
#katsotaan, onko osoitteessa www sisällä
rewriterule ^(.*)$ http://sivu.com/$1 [nc,r]
#jos on, korvataan se.
Tietyn tiedoston sisällyttäminen automaattisesti
- Koodi: Valitse kaikki
php_value auto_prepend_file tiedosto-ennen.html
#tiedosto, joka lisätään jokaisen tiedoston alkuun
php_value auto_append_file tiedosto-jalkeen.html
#tiedosto, joka lisätään jokaisen tiedoston loppuun
Tässäpä tämä pienimuotoinen opas, toivottavasti tästä oli jollekin hyötyä. Jos oppaassa on virheitä tai jokin ei toimi tai jäi epäselväksi, niin kysy vaan.
