Apache .htaccess galimybės, panaudojimas

Įžanga

Šis straipsnis skirtas tiems kurie bando perprasti .htaccess veikimą. Straipsnį rašau todėl kad beieškodamas pats keleto naudingų .htaccess funkcijų susidūriau su gan nemaža problema tiek užsienyje (Labai retai, bet pasitaikydavo), tek Lietuvoje (praktiškai informacijos neradau) kad .htaccess aprašomas kaip koks Velnias ir labai nenuosekliai, kas ką daro ir kas už ką atsakingas šiame faile. Jeigu ir pavykdavo rasti informacijos apie norimą funkciją paprasčiausiai būdavo per daug informacijos kaip vienai funkcijai, ir nebuvo laiko visko skaityti. Taigi nusprendžiau pasidalinti .htaccess failo funkcijomis, jo veikimu. Manau šis straipsnis pravers ne vienam.

Katalogų priėjimo valdymas

Kartais turbūt norite išjungti visišką priėjimą prie katalogų (kaip pavyzdys, jūs turite direktoriją su programiniais failais kurie įterpiami į pagrindini failą. Tokiu atveju tik pagrindinis failas turi turėti priėjimą prie programinių failų, bet nė vienas kitas negali jų atidaryti.) Taigi, tokiu atveju susikurkite .htaccess failą kataloge kurį norite apsaugoti, ir įkelkite tai:

#Uždraudžiame visus priėjimus
deny from all

Jigu norite leisti priėjimą tam tikram IP, įrašykite tai:

#deny all access
deny from all
allow from 127.0.0.1

Taip pat galite pridėti ir IP sritį. Tereikia jums pakeisti:

allow from 127.0.0.1

į žemiau pateiktą kodo dalį:

allow from 127.0.0.1/24

Taipogi galite uždrausti failus ir nurodę juos tiesiogiai kurių nerodyti:

<Files privatus.html>
Order allow,deny
Deny from all
</Files>



Katalogų naršymas

Jeigu norite, kad po katalogus būtų lengviau naršyti, tuomet jums reikėtų pridėti žemiau pateiktą eilutę į .htaccess failą:

Options +Indexes +MultiViews +FollowSymlinks

Žemiau pateikta eilutė reikalinga patikrinimui ar yra įdiegtas atitinkamas Apache modulis jūsų Web serveryje.

<ifmodule mod_autoindex.c>
IndexOptions FancyIndexing
</ifmodule>

Taip pat galite neleisti katalogų/failų indeksavimą:

IndexIgnore *



Suspaudimo įjungimas

Jūs galite įjungti PHP duomenų suspaudimą taip išsaugodami dalį srauto:

<ifModule mod_php4.c>
php_value zlib.output_compression 16386
</ifModule>



Failų paslėpimas

Uždrausti priėjimą tam tikriems failams jūs galite naudoti reguliarius išsireiškimus (Regular expression) taip uždrauzdami priėjimą prie failo kurio galūnė prasideda .ht
Jūs galite modifikuoti uždrausdami nustatytus failus (tarkim konfigūracijos failus, robots.txt, log'ų failus ir visa kita ką tik norėsite)

<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>



Nuosavas 404 klaidos pranešimas

Jeigu norite pakeisti standartišką HTTP 404 klaidos puslapį, galite jį persiųsti į kitą failą su pateiktu žemiau kodu:

ErrorDocument 404 /klaidos/nerasta.html

Tai perkelia vartotoja į /klaidos/nerasta.html failą tuomet kai iškyla Apache klaida 404. Klaidų kodus galite rasti CodeRS Wiki svetainėje paspaudę Apache klaidų kodai.

Blokuojame botus

Manau kartais norisi užblokuoti botus, vorus kurie renka informaciją iš jūsų svetainės negeriems dalykams kaip pavyzdys: vartotojo paštas renkamas Spam'ui. Manau tokiu būdų reikėtų uždrausti visus galimus botus kad negalėtų prisijungti prie jūsų svetainės. Pilna .htaccess nelegalių robotų sąrašą galite rasti čia: Nelegalūs Web robotai

Nereikalingas WWW

Jeigu norite atlikti tai, naudokite paprastą perrašymo sintaksę:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.example\.com[nc]
RewriteRule ^(.*)$ http://example.com/$1 [r=301,nc]
</IfModule>

Kodėl nereikia WWW? Plačiau apie tai galite paskaityti čia [Angliška versija]

Pervadiname failų pavadinimus

Jūs galite padidinti savo saugumą bent maža dalimi pakeisdami savo programinių failų galūnes. Taigi lankytojai nežinos kokią programavimo kalbą jūs naudojate:

# Pakeiskime PHP tipą į nežinomą
AddType application/x-httpd-php .133t

Taigi šiuo atveju .133t failai bus interpretuojami kaip PHP failai. Jūs turite pakeisti savo esamų failų galūnes į naująją galūnę.

Slaptažodžio apsauga su .htpasswd

Tai naudinga jei norite apsaugoti slaptažodžiu kelis savo failus/katalogus.

      AuthUserFile /home/www/.htpasswd
      AuthType Basic
      AuthName "Mano saugus katalogas"
 
      <LIMIT GET POST>
      require valid-user
      </LIMIT>

Jūs taip pat galite nustatyti slaptažodį vienam failui panaudodami <Files> direktyvą.



Įjungiamas SSI

Naudokite pateiktą instrukciją norėdami įjungti SSI:

AddType text/html .html
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml



Pakeičiamas pagrindinis failas

Kaip žinia daugumoje serverių būna nustatytas pagal nutylėjimą index . galūnė failas. Jūs galite pakeisti šį dalyką prirašydami tik vieną eilutę (Primename, eiliškumas labai SVARBU!)

DirectoryIndex home.html index.htm index.html index.php



Kalbos tikrinimo direktyva

Ši direktyva gali būti nadinga automatiniam kalbos klaidų taisymui.

<IfModule mod_speling.c>
CheckSpelling On
</IfModule>