.htaccess
Mureakuha
.htaccess on Apache-palvelinohjelmiston ominaisuus jolla voi muuttaa palvelimen konfiguraatiota lennosta / hakemistokohtaisesti palvelimen ylläpitäjän myöntämien oikeuksien mukaisesti. Yleisimmin käytetään esimerkiksi oman virhesivun näyttämiseen tai salasanasuojaukseen, mutta periaatteessa .htaccess:lla voi muuttaa kaikkia Apachen konfiguraatio-optioita, jos ylläpitäjä sen vain on sallinut. Apache on erittäin tarkka siitä, että viimeinenkin konfiguraatiorivi päättyy rivinvaihtoon. Alla muutamia esimerkkejä yleisesti käytetyistä optioista:
Sisällysluettelo |
Virhesivut
ErrorDocument {numero} {virhesivuston_osoite}
ErrorDocument 404 http://omakotisivusi.net/error.html
ErrorDocument 403 /errors/forbidden.html
ErrorDocument 500 "<h1>500</h1><p>Internal Server Error</p>
Lainausmerkki kuuluu vain alkuun
Hakemiston salaaminen
Tarvittavat tiedot .htaccess-tiedostoon hakemiston salaamiseen
AuthUserFile /mureakuhan/salaiset/.htpasswd AuthGroupFile None AuthName "Mureakuhan Admin -sivusto" AuthType Basic require valid-user
Salasanan ja tunnuksen sisältävä .htpasswd-tiedosto
Mikäli mahdollista, kyseinen tiedosto olisi järkevä asettaa jonnekin muualle kuin internetiin näkyviin kansioihin (yleensä public_html). Nimen ei ole myöskään pakko olla .htpasswd vaan se voi olla nimetty vaikka sitä vastaavan sivun/kansion mukaisesti.
Tiedoston rakenne/tiedoston luominen käsin
.htpasswd-tiedosto sisältää tunnistautumisessa käytettävien tunnuksien tiedot, eli käyttäjätunnuksen ja salasanan. Salasana on kryptattu yksisuuntaisella Unix DES menetelmällä, samalla jota esimerkiksi PHP:n funktio crypt() käyttää oletuksena. Tosin Apache tukee myös MD5-tarkistussummien käyttöä. Tiedostossa on yhden käyttäjän tiedot aina yhdellä rivillä, nimimerkki ja kryptattu salasana on erotettu kaksoispisteellä ":". Esimerkki:
Natalie:$1$Ju1.ei1.$tBj5h/8okrHb/vKMiXtUD. Paris:$1$Ju1.ei1.$tBj5h/8okrHb/vKMiXtUD.
Tämä luo siis kaksi käyttäjää, Natalie ja Paris joiden kummankin salasana on "salasana".
Htpasswd-ohjelman käyttö
Apachen mukana tulee htpasswd-ohjelma jota voidaan käyttää käyttäjien lisäämiseen.
Luo kokonaan uusi .htpasswd-tiedosto kirjoittamalla:
htpasswd -c .htpasswd käyttäjä
Tai jos sinulla on jo .htpasswd-tiedosto, voit kirjoittaa:
htpasswd .htpasswd uusikäyttäjä
Mikäli käytössä on Apache 2, käytä htpasswd2-ohjelmaa.
PHP ja .htaccess
php.ini säätöjen tekeminen htaccesin avulla
Voit ylikirjoittaa php.ini:n säätöjä käyttäen .htaccessia seuraavasti:
- php_value [asetuksen nimi] [arvo]
tai
- php_flag [asetuksen nimi] [arvo]
Esimerkkejä
Magic Quotes (gpc) pois käytöstä:
php_flag magic_quotes_gpc off
Virheraportit pois käytöstä:
php_flag display_errors off
Register globals pois käytöstä:
php_flag register_globals off
Maksimi upload-tiedoston koon muutos:
php_value upload_max_filesize "16M"
Halutun sivun lataus lopettaessa ja aloittessa
php_value auto_prepend_file "alku.php" php_value auto_append_file "loppu.php"
Rewrite
Rewrite-moduulilla voidaan muuttaa Apache käsittelemään hakemiston perään laitettavia merkkijonoja haluamallasi tavalla. Esimerkiksi halutun kansion jälkeen oleva merkkijono voidaan laittaa suoritettavaksi vaikka hakemiston tiedostolla kohde.php. Methodina kannattaa käyttää GET-methodia jolloin merkkijono voidaan välittää kyseiselle skriptille urlissa, ja kohde.php voidaan käsitellä eri tavalla riippuen minkä merkkijonon käyttäjä on syöttänyt.
RewriteEngine On RewriteRule ^([a-zA-Z0-9]+)$ kohde.php?kohde=$1
Kyseinen koodi .htaccess tiedostossa käsittelee merkkijonon (joissa aakkosia ja numeroita) tiedostossa kohde.php ja välittää hakemiston nimen skriptille GET-methodilla kohde-muuttujaan.
Hyöty tästä on paitsi siistimpi osoite (vrt www.mureakuha.com/koodikirjasto/koodit.php?haekoodit=pascal ja www.mureakuha.com/koodikirjasto/pascal), samoin hakukoneet eivät usein tunnista ? merkin jälkeisiä osoitteita oikein.
# Htaccess-esimerkki, jolla saat ohjattua
# domain.tld/ihanmitävaan yhdelle tiedostolle
# Mutta mikäli tiedosto on olemassa, ohjausta ei tapahdu
#
# PATHINFO toimimaan
AcceptPathInfo on
# Uudellenkirjoitusmoottori päälle
RewriteEngine On
# juurihakemisto (domain.tld/)
RewriteBase /
# ei ole index.php
RewriteCond %{REQUEST_FILENAME} !index\.php
# ei ole tiedosto
RewriteCond %{REQUEST_FILENAME} !-f
# ei ole hakemisto
RewriteCond %{REQUEST_FILENAME} !-d
# ohjataan
RewriteRule ^(.*) index.php/$1 [QSA,L]
Virtuaalisen alidomainin tekeminen
Käynnistetään ensi RewriteEngine:
RewriteEngine On Options +FollowSymlinks RewriteBase /
Määritellään alidomainit samalla palvelimelle olevalla sivutilalle:
# ensimmäinen alidomain
RewriteCond %{HTTP_HOST} alidomain.omadomain.tld$
RewriteCond %{REQUEST_URI} !alidomain/
RewriteRule ^(.*)$ alidomain/$1
# toinen alidomain
RewriteCond %{HTTP_HOST} toinenali.omadomain.tld$
RewriteCond %{REQUEST_URI} !toinen/
RewriteRule ^(.*)$ toinen/$1
Kannattaa myös harkita, laittaako alidomainit omaan hakemistoonsa tyyliin: subdomains/alidomain jne.
Määritellään alidomain toisella palvelimella olevaan sivutilaan:
# Alidomain ulkopuoliselle palvelimelle
RewriteCond %{HTTP_HOST} alidomain.omadomain.tld$
RewriteRule ^(.*)$ http://jokutoinen.domain.tld/hakemisto$1 [P]
