« 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.

Kommentek RSS ikon
A bejegyzéshez érkezett kommentek, amiket RSS csatornán is követhetsz.
na, ez kell nekem, köszi mefi! :)
mefi:Látom nálad is efféle '"módszer" van :)
Dani: nincs mit. :

zulukaaa: igen, mert véleményem szerint ez pofásabb, mint a
?valmi=buher
szerkezet. Ha lesz időm, írok arról is, hogy lehet a címet odabiggyeszteni.
az eveknel-honapoknal minek a legalabb? 10000-ben mar nem valoszinu, hogy menni fog a blog :D

masreszt meg a postoknak a bejegyzes resz siman elhagyhato, es mehet a /id/cim url.
Jó, tízezerben valszeg nem olvassa ezt már senki. :D


A bejegyzes rész az jobb, mert a domain/id/ nekem nem jön be; persze ez személyes dolog. :)
Azért ettöl még nem lesznek a webcímek baratsagosak, mert a letrehozott belso linkeket is at kell alakítani. Talán érdemes megnézni a drupalt is, hogy az hogyan kezeli a dolgot, meg mas motorokat amik hasonloan mukodnek. Illetve a weblaboron is van errol szo korabban.
Az irattár nem akar müködni… :S
sajt: De a fent említett példákat sokkal barátságosabbá tettük. Meg ez inkább egyéni motort bömböltetőknek szól. :)

Schmile: köszi, ez tetszik! :)
Hali!

Az irattáros regexp-nél:

^irattar/([0-9]+){4}/([0-9]+){2}/([0-9]+){2}


ez működőképesebb–és ezért nem megy Daninak–lehet:

^irattar/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})


Tehát nálad a hónapokat és napokat kötelezően két karakterben kellett megadni, míg a példádban is csak 2006/3/1-et írtál, ami ezért nem ment. Regexp-ben a {} a következőket jelöli:
{2}: kötelezően 2 karakter
{1,}: minimum 1 karakter
{1,6}: minimum 1 karakter, maximum 6
Köszi a segítséget, de kiderült, hogy mi a probléma, részben ez, részben pedig az is, hogy lemaradt két nyitó zárójel. :)
Szuper leírás! Az új szerveremen én is használni fogom! köszi szépen!!!
Új komment

Itt az adott bejegyzésben elhangzottakhoz szólhatsz hozzá. Ha primitív, csúnya, vagy bunkó erkölcsről teszel tanúbizonyságot, tuti, hogy kimoderállak és rosszat mondok rólad. A hozzászólás nem kötelező, amit írsz vállald föl!

Ezeket az adatokat - ha a böngésződ kezeli a kukikat - csak egyszer kell megadnod, később módosíthatod.

Ha van gravatarod - és a gravataros e-mail-címeddel kommentálsz -, akkor az megjelenik. Ha nincs, vagy nem tudod miaz, akkor olvasd el az útmutatót és regisztrálj.

Neved: E-mail címed (nem jelenik meg): Webszájtod (ha van): Kommented: Mennyi három és négy összege?
Ez védelmi célokat szolgál, szimplán írd be a fenti összeadás összegét!

A kommentedet írhatod nagyobb mezőbe vagy akár formázhatod is, de ha nem szalonképes, akkor moderálom!

Ajánló
Ebben a témában, esetleg ezen a napon voltak még ilyenek is:

Az ebay már magyarul is elérhető (2010. október 29., 09:49:36)
Árnyékoló (2010. május 26., 08:24:10)
Robin Cook: Agy (2006. június 26., 05:47:23)

Érdekességek
Száraz számok, pusztán csak tények:

Ez a bejegyzés 2229 napja született, 998 szóból, és 5100 karakterből áll. Ajánlhatod bizonyos linkgyűjtő oldalaknak: