Htaccess 1. rész – Bevezető

.htaccess

A webtárhelyeken leggyakrabban megtalálható fájlok egyike, a szép linkek anyja, a hibaüzenetek megszépítője, a titkosított mappák titkára, a sebesség segítője nem más mint a .htacces.  A legtöbb webfejlesztő nem is tudja igazán, hogy mennyi lehetőség rejlik ebben a fájlban, arról nem is beszélve, hogy ezeket hogyan kell előcsalogatni. Ezzel a fájlal legtöbbünk csak kész formában találkozik, pedig nem olyan nehéz elsajátítani a rejtelmeit.

Ebben a cikkben bevezetünk téged a .htaccess használatába, majd a második részben pontos példákkal is ellátunk, hogy a jövőben magadtól is boldogulhass ezekkel a fájlokkal. Segítségünkkel könnyedén tudsz majd egyedi hibalapokat készíteni (nem csak 404-es hibaoldalt), jelszóval védett/rejtett mappákat/fájlokat készíteni, keresőbarát linkekkel dolgozni, kliens-szerver oldali tömörítéssel gyorsítani az oldalad betöltésén stb. Érdemes velünk tartanod!

Mi is az a .htaccess?

Alapvetően, mikor egy .htaccess fájlról beszélünk, egy olyan szerver dokumentumra gondolunk, amit arra használnak hogy fájl/mappa hozzáféréseket határozzanak meg, URL maszkokat értelmezzenek  vagy egy hibaüzeneteket jelenítsenek meg. Legtöbb esetben használata kimerül abban, ha egy felhasználó nem létező fájlra hivatkozik, akkor egy egyedi 404-es hibaoldalt jelenítsen meg. Emellett a .htaccess fájlokat gyakran használják, hogy keresőbaráttá tegyenek egy oldalt. A 301-es (véglegesen áthelyezve) átirányításokért is ő felelős mindössze néhány sor segítségével.

.htaccess mindamellett a modern “permalink” struktúrák alapjaként is szolgál. Remek példa erre a WordPress, ami a főkönyvtárban lévő .htaccess fájl miatt tud “szép linkeket” használni anélkül hogy a linkjeiben szereplő mappastruktúrák valójában léteznének. A szépítés előtt a linkek valahogy így festettek:

http://webragacs.onetdev.com/?p=59207

Mikor a .htaccess fájl URL “átírásra” (angolul: rewrite) használjuk, olyan hasznos információk kerülhetnek a linkbe mint a cikk megjelenésének dátuma vagy a cikk címe. Ezek a formázott URL-eket a keresők is jobban szeretik, nem is beszélve arról hogy így egy linkből elmondható, hogy mit is fed. A WordPress átírt URL-je ehhez hasonló lesz:

http://webragacs.onetdev.com/2013/03/htaccess-1-resz-bevezeto

Ha logikusan végiggondoljuk, a “htaccess bevezető” kifejezésre rákeresve, előbb találja meg a webkereső az utóbbi formában az oldal. Részben emiatt vált a legsikeresebb .htaccess lehetőséggé az URL átírás, annak ellenére, hogy a többi lehetőségről a webfejlesztők többségének gőze sincs. Sőt, a legtöbb tartalomkezelő rendszer saját maga intézi a piszkos feladatot, így még kevesebbünk tanulja meg, hogy tulajdonképpen hogyan is működik a .htaccess fájl.

A .htaccess fájlok többnyire az Apache architektúrán alapuló tárhelyeken velejárói, ám egyes tárhelyeken sajnos ezt a lehetőséget szándékosan letiltják (manapság már nem szokás ezt a lehetőséget korlátozni). Apache 1.x és 2.x verzió alatt egyaránt elérhető, jelentősebb eltérések nélkül.

Vajon az én tárhelyem is használ .htaccess fájlt?

Az első dolog, amit az emberek észrevesznek, hogy a .htaccess fájl nem szokványos nevet visel, hiszen nem a hagyományos értelemben véve nincs neve, csak kiterjesztése. Ezt jelenséget a nyílt forráskódú operációs rendszereknek köszönhetjük, amikben a ponttal kezdődő fájl és mappanév annyit tesz hogy az adott objektum rejtett. Ez annyit jelent, hogy az átlagos webező ezekhez a fájlokhoz nem férhet hozzá, nem módosíthatja azokat.

A fájl elnevezésének egyedi módja sokszor megzavarja a felhasználókat, hiszen arra tervezték hogy rejtve maradjon így a hagyományos FTP böngészők jobbára meg sem jelenítik, nem listázzák azt (erre külön kérni kell az FTP böngészőt). Emiatt az új fejlesztők sokszor azt gondolják – ha nem látják a .htaccess fájlt – hogy az nem is létezik, ilyenkor létrehozzák saját példányukat, ezzel felülírva az eredetit, ami további galibákhoz vezet. A legtöbb szerver automatikusan létrehozza ezeket  .htacces fájlokat.

Néhány esetben a web hostok bár támogatják és használják a .htaccess fájlokat, ám a felhasználók számára nem biztosítanak azokhoz hozzáférést. Ez többnyire az ingyenes és olcsó szolgáltatóknál van itt, ahol sokkal szigorúbban veszik a jogosultságok kiosztását. Sok esetben drágább csomagokkal oldják csak fel ezeket a fájlokat, hogy a fogyasztókat ösztönözzék a nagyobb csomagok vásárlására. Ennek tesztelésére nézzünk bele a webroot (leggyakrabban public_html) mappába és nézzük meg, létezik-e .htacces fájl (ehhez szükséges a kliens megfelelő beállítása), ha találtunk ilyet, készítettünk egy biztonsági mentést, majd próbáljuk meg feül írni ezt a fájlt. Amennyiben hibaüzenetet kapunk, nyilvánvaló, hogy a hozzáférésünk korlátozott. Ilyen esetekben ha módosítást igényelnénk, a tárhely supportjához kell fordulnunk.

Mikor indokolt a .htaccess funkciók használata?

A .htaccess fájlt általában egyedi hibaoldalak (pl.: 404 – oldal nem található, 500 – belső szerverhiba), URL átírásokra vagy hozzáférési jogosultságok módosítására szokták használni. Így tehét nem létező fájl/mappa esetén egyedi hibaoldalt mutathatunk a felhasználónak, olyan mappákat hozhatunk létre amik megtekintéséhez jelszóra van szükség, vagy összetett URL-eket alakíthatunk egyszerű és ember által is “olvasható” permalink-ké, ahogyan azt a WordPress is teszi (a Webragacs is ezt használja!). Lentebb találsz néhány példát ezek használatára.

1. Átirányítás régi helyről újra 301-es kóddal

A weboldalak egyik legnagyobb problémája, hogy mikor áthelyezik a tartalmaikat, akkor a kereső motor besorolásuk drasztikus esésnek indul az áthelyezés után. Ez azért fordulhat elő, mert a fájlok nem megfelelően lettek áthelyezve új helyükre, így a keresők nem informálódnak arról, hogy milyen új elérhetősége van a régi tartalomnak. Az átirányítás helyett a keresők ilyenkor 404-es hibaüzenetbe futnak, ami nem jelent mást, mint hogy a tartalom egyáltalán nem található/létezik. Ebben az esetben a keresőmotor eltávolítja az adott tartalmat az indexéből, így az adott tartalomnak majd ismét újra kell építenie “hírnevét”.

Ennek elkerülésére a SEO (keresőoptimalizálás) profik mindenhol megkövetelik a 301-es átirányításokat a .htaccess fájlokban. Ez a hiba ismert még “végleges átirányítás” néven is, ami annyit jelent, hogy egy meglévő tartalmat új elérhetőségre mozgatnak a kereső indexében, míg az eredeti “hírnév” (Page Rank) megőrzésre kerül. Ilyenkor a régi elérhetőséget el is felejti a kereső és már csak az új elérhetőséget fogja időről időre újra ellenőrizni. Egy 301-es átirányítás a elméletben így fest:

Redirect 301 http://webragacs.onetdev.com/regi-url http://webragacs.onetdev.com/uj-url

301 Átiranyítás

A fenti rész sokak számára egyértelmű és magától értetődő, de azoknak akiknek mégsem lenne ennyire triviális pár sorban gyorsan összefoglalom: A kód első része, a “Redirect 301” egy státuszkód, ami meghatározza, hogyan is értelmezze a kliens/keresőmotor a szerver válaszát. Az első URL a kívánt tartalom régi elérhetőségét tartalmazza míg a második URL a frissített (új) elérhetőségét fedi. Míg a példa ugyan azt a domain nevet tartalmazza, a 301-es átirányítás domainek között is kiválóan működik.

2. Fájlok és mappák védelme .htaccess és .htpasswd segítségével

Aki már foglalkozott fájlok vagy mappát jelszavas levédésével valószínűleg találkozott már a .htaccess és .htpasswd fájlokkal akció közben. Ennek a két fájlnak szoros együttműködésével könnyedén létrehozhatóak védett fájlok és mappák, amik megtekintéséhez felhasználónévre és jelszóra van szükség. Amennyiben valaki jelszó megadása nélkül akarna hozzáférni ezekhez a titkosított anyagokhoz, a szerver megtagadja a lekérést. Ez kiváló mód érzékeny fájlok, adminisztrációs felület vagy érzékeny bejelentkező képernyő megóvására kártevőktől és rosszakaró felhasználóktól, akiknek távolról sincsenek becsületre méltó ötleteik az aktuális weboldallal kapcsolatban.

A folyamat első lépcsőfoka, hogy készítsünk egy .htpasswd fájlt és helyezzük abba a mappába, ahol a védett fájlokat is helyezni fogjuk. (A .htpasswd fájlnak feltétlenül abban a mappában kell lennie, amelyiket le szeretnénk védeni.) A fájl tartalmát sem bonyolult feladat elkészíteni, csupán a felhasználónevet és a jelszót kell megadnunk kettősponttal elválasztva. A speciális karaktereket ajánlott kerülni, mert az problémákhoz vezethet. Például így:

ErvenyesFelhasznalo:EzAzOJelszava123

Ez az egy sor kerüljön bele a .htpasswd fájlba, majd kerüljön feltöltésre a levédeni kívánt mappába. Ha esetleg több felhasználónak is szeretnél hozzáférést biztosítani akkor egyszerűn csak írd be az adatait egy újabb sorba a fenti példához hasonlóan.

Ha szeretnél egy fájlt úgy levédetni, hogy a megtekintéséhez érvényes felhasználó-jelszó párosra legyen szükség, az alábbi néhány sor használatára szükséged lesz a .htaccess fájlodon belül is, ahogyan az alábbi példa mutatja:

AuthUserFile /server/utvonal/levedettMappa/.htpasswd
AuthType Basic
AuthName "A levédett oldal címe"
<Files "login.php">
Require ValidUser
</Files>

A fenti kód használata meglehetősen egyszerű, nincs semmi más teendőnk mint a megfelelő .htpasswd fájlra hivatkozni, majd megadni a levédeni kívánt fájlokat (jelen esetben a login.php) és megadni egy címet a kis ablaknak (AuthName), ami majd felugrik a felhasználó böngészőjében kérve a felhasználónevet és jelszót.

Tipp: Ha esetleg attól félsz, hogy a szervereden található fájlok között bárki szabadon böngészhet, van egy jó hírem: Manapság a fájlok listázását a legtöbb tárhelyszolgáltató tiltja, biztonsági okokból. A fájlok természetesen a pontos elérhetőségük ismeretében természetesen továbbra is hozzáférhetőek maradnak, de a Windows Intézőhöz hasonlóan nem lehet köztük böngészni.

3. hiányzó fájlok és mappák esetén egyedi 404-es hibaoldal

A weboldalak, ahogy az őket kiszolgáló szerverek is, folyamatosan fejlődnek. Ez azt jelenti, hogy néha egy-egy mappa és fájl törlésre kerül, mert már nincs rá szükség vagy a felhasználó olyan oldalt keres fel, ami soha nem is létezett. Annak érdekében, hogy erről a felhasználót is értesítsük és/vagy megoldással szolgálhassunk neki, érdemes kihasználni az egyedi 404-es oldal adta lehetőségeket. (A keresőrobotok 404-es hibakód esetén nem indexelik az adott oldalt, így csökkenthető a fölösleges forgalom.)

A 404-es hibaoldalak használatához csupán egyetlen sor kódra van szükség, amit a .htaccess fájlba illesztve meg is oldhatunk. A beillesztendő kód az alábbi:

ErrorDocument 404 /eleresi/ut/vonal/404-hiba-oldal.htm

Ahhoz, hogy a megfelelő fájlra mutasson, módosítsuk a 404 utáni részt. Csupán ennyi az egész, így ha legközelebb valaki olyan oldalt keres fel a tárhelyeden, ami nem létezik a te egyéni hibaoldaladdal fogja magát szembe találni. (Természetesen a hibaoldal tartalmát neked kell létrehoznod.)

Forrás: Speckyboy

Koller József írása –

Közel tíz éve foglalkozom informatikával, azon belül főként a webfejlesztéssel. Nem vagyok designer, de ettől teljesen függetlenül rajongok a szépen megtervezett grafikákért. Munkám első sorban a háttérben zajlik, ugyanis "kódolással" foglalkozom.

  • Ha tetszett a cikk, osztd meg!