A .htaccess használata

A legtöbb szerveren (kivételt képeznek az ingyenes szolgáltatók) lehetőség nyílik a .htaccess fájl és a mod_rewrite használatára. Ebben az a jó, hogy könnyedén készíthetünk barátságos weboldalcímeket, melyek kényelmesebbé teszik oldalunk használatát. Fontos, hogy az itt leírtak helytelen használata a szerver ideiglenes leállásához vezethet, valamint néhány szerveren kérni kell, hogy engedélyezzék a .htaccess fájlok használatát.

A kezdet

Legelőször szükségünk lesz egy .htacces fájlra. Ezt Total Commanderben, vagy valamelyik hasonló fájlkezelőben tudjuk létrehozni. A fálj neve egyszerűen .htaccess, tehát semmi nincsen a pont előtt. Ebben kapásból elhelyezzük a vizsgálatot, hogy a szerver támogatja-e a nekünk szükséges szolgáltatást:


<IfModule mod_rewrite.c>
RewriteEngine On
# ide helyezzük majd a tartalmat
</IfModule>

Ez egyelőre semmi többet nem csinál, csak ellenőrzi, hogy a mod_rewrite modul használható-e, és ha igen, akkor aktiválja azt.

A régi cím

Vegyül például Dani blogját (remélem nem haragszik meg érte), ahol egy bejegyzésre mutató link nagyjából így néz ki:

http://creative-x.hu/dani/index.php?bejegyzes=1&id=476

Itt a bejegyzes rész nem tudom, hogy mit jelent, de az id értelemszerűen a bejegyzés azonosítójára mutat. Ezt a rút és barátságtalan linket, most gyönyörű kedves hivatkozássá változtatjuk.

A lecsó közepe

Mondjuk az új cím kinézete legyen az, hogy /bejegyzes/id/. Ez kezdetnek megteszi, később pedig tudunk vele variálni. Az előbb elkészített fájlunkban, a megjegyzés helyére az alábbi sort szúrjuk be:


RewriteRule ^bejegyzes/([0-9]+) index.php?bejegyzes=1&id=$1

Ebben egy apró mintaillesztés található, ami mondatszerűen nagyjából úgy hangzik, hogy legyen egy bejegyzes mappa, majd azután egy per jel, és egy tetszőleges hosszúságú szám. A sima zárójelben található érték memorizálva lesz, így erre később hivatkozhatunk. Egy szünet következik, és utána az a cím, ahová irányítunk. Ez ugye a fönt említett cím, de az id után egy $1 kerül, amiben a memorizált szám található. Ezt lementve, majd a főkönyvtárban elhelyezve tökéletes, letisztult weboldalcímet kapunk, valami effélét:

http://creative-x.hu/dani/bejegyzes/476

A befőttesüveg

Vannak ennél összetettebb példák, ahol több feltétel megadása szükséges. Szintén Dani oldalán nézelődtem, és az irattár linkjei pont megfelelőek erre a célra. Így néz ki egy hónap elérése:

http://creative-x.hu/dani/index.php?archive=1&year=2006&month=3&page=1

Ez már kissé összetettebb, mint az előző link, így több dolgunk is lesz vele. Az archive rész újfent nem tudom mi lehet, talán a mód váltása, ez számunkra elhanyagolható, csak az átirányításnál írjuk majd be. A terv, hogy a csúnya linkből, valami ilyet csináljunk:

http://creative-x.hu/dani/irattar/2006/3/1

Ez nemcsak barátságosabb, hanem sokkal rövidebb is. A megvalósítása pedig nem sokkal bonyolultabb, mint az előző esetben. Vegyük elő a fájlunkat, és az előző sor után (tehát mindenképpen az </IfModule> elé) helyezzük el az alábbi sort (a láthatóság érdekében két sorban írom):


RewriteRule
^irattar/([0-9]+){4}/([0-9]+){2}/([0-9]+){2} index.php?archive=1&year=$1&month=$2&page=$3

Ez már kicsit bonyolultabbnak tűnik, de csak a sok zárójelnek köszönhetően. Ismét mondatszerűen, ez annyit csinál, hogy az irattar mappából elővesz egy legalább négyjegyű számot (ezt a kapcsos zárójelek között adtuk meg), amit memorizál $1-nek. Eztán vesz két, legalább kettő jegyű számot, s ezeket $2 és $3 néven tárolja. Az így kapott eredményt pedig a fent említett hivatkozásra irányítja. Tehát az első szám lesz az év, a második a hónap, a harmadik pedig az aktuális oldal.

Meglátni és megszeretni

Az ezek, és ezekhez hasonló módszerekkel csodálatos eredményeket lehet elérni, minimális erőfeszítés mellett. A használatához persze elengedhetetlen egy minimális ismeret a mintaillesztő, azaz reguláris kifejezésekből. Ezekhez a legjobb segédlet a PHP onlájn kézikönyve, valamint Verhás Péter írása.

« »

mefiblog logó

Írja és rendezi Mefi, avagy Nádai Gábor © 2005-2024

A blogot büszkén pörgeti a WordPress motorja, Anders Norén sablonjának átbuherált változatával.