.htaccess

Mureakuha

Loikkaa: valikkoon, hakuun

.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]
Henkilökohtaiset työkalut