Htaccess 1. rész – Bevezető
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.
A .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
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 – A szerző összes bejegyzése
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.