Egyszerű átirányítások

Az átírásoknak és átirányításoknak sok opciója, és paramétere van. Ebben a fejezetben csak a legegyszerűbbeket mutatom be, a bonyolultabbak a későbbi fejezetekben vannak. Az egyes kódok részletes okára a következő fejezet ad magyarázatot.

Ne feledjük, valamennyi átirányítási utasítás előtt! legyen ott az alábbi kód:

Options +FollowSymlinks
RewriteEngine on
RewriteBase / #vagy / helyett /könyvtárnév

Statikus oldal átírása és átirányítása

Egy konkrét oldal átírása az alábbi sémában történik:

RewriteRule ^mit\.html$ mire.html

Egy konkrét oldal átírányítása ugyanígy néz ki, csak a sor végére kell rakni egy [R], vagy 301-es, végleges átirányítás esetén az [R=301] kifejezést:

RewriteRule ^mit\.html$ mire.html [R=301]

Ha csak simán az [R]-et adjuk meg, akkor az 302-es típusú, azaz ideiglenes átirányításnak felel meg.

Az előző oldalon bemutattam egy egyszerű példát az átirányításra és átírásra, a konkrét htaccess kód nélkül. A fenti kód alapján könnyen kitalálható, hogy magában a htaccess-ben ez a kód szerepelt:
RewriteRule ^index2\.html$ index1.html
RewriteRule ^index3\.html$ index1.html [R]

Láthatjuk, hogy a második paraméter, az amire átirányítunk, viszonylag egyszerű, hiszen egyszerűen csak beírtuk a file nevét. Valójában ez sem ilyen egyszerű, később bemutatjuk ennek különböző variációit. Az első paraméternél mindenféle furcsa kiegészítő karakterek vannak. Mik ezek, miért kellenek, és biztosan szükségesek oda?

Mielőtt ezekre a kérdésekre válaszolnánk, nézzünk meg még egy alkalmazási módot:

php paraméter alkönytárként

Gyakori eset, hogy sok aloldalt egyetlen php file-ból szeretnénk generálni, egy paramétertől függően. Erre a tipikus megoldás egy olyan gyumolcs.php?id=barack jellegű sor, ahol a gyumolcs.php kap egy id=barack paramétert. Mennyivel szebb lenne ezt /gyumolcs/barack/ formában megadni! Ebben segít nekünk az alábbi htaccess sor:

RewriteRule ^/gyumolcs/(.*)/?$ gyumolcs.php?id=$1

Nézzünk egy konkrét példát:

Nyissuk meg az alábbi linkeket, amelyeknél a megnyíló file kiírja, hogy hány kicsi indián van még a szobában.

http://peldak.htaccesstutorial.infojegyzet.hu/redirect2/indianok/6
http://peldak.htaccesstutorial.infojegyzet.hu/redirect2/indianok/43
http://peldak.htaccesstutorial.infojegyzet.hu/redirect2/indianok/54

Próbáljuk ki úgy is, hogy megnyitjuk valamelyik fenti linket, és kézzel a sor végén álló számot átírjuk bármely 1 és 100 közötti egész számra! Látható, hogy úgy is tökéletesen működik az indiánok számának kiírása.

Nyilvánvaló, hogy nem hoztam létre 100 különböző oldalt, és 100 sort a htaccess-ben. Egyetlen php file oldja meg a kiírást, amely paraméterül kapja az indiánok számát. A redirect2 könyvtárban lévő htaccess-ben ehhez a kötelező sorokon kívül egyetlen sor, az alábbi kell:

RewriteRule ^indianok/(.*)/?$ indian.php?count=$1

Mik ezek a furcsa karakterek?

A fenti példában szereplő karakterek látszólag még érthetetlenebbek, mint a korábbiak, ugyanakkor láthatóan jól teszik a dolgukat, egyetlen sorban több száz sor átírását megoldottuk. Miért van ezekre szükség, és hogyan működnek?

Azt a megadási módot, ahogy az átirányítási utasítás első paraméterében megadtuk, hogy miről irányítunk át, reguláris kifejezés-nek nevezzük. A működésének lényege, hogy nem konkrét szöveggel való teljes egyezőséget keres, hanem egy megadott mintára való "illeszkedést". Ez lehetővé teszi igen bonyolult műveletek keresési lehetőségek megadását, cserébe az egyszerűbb dolgokat kicsit bonyolultabban kell írni.

Ezen kifejezések szintaktitkájának megértése elengedhetetlen, ezért azokat egy külön fejezetben mutatom be, sok példán keresztül, azt követően térhetünk rá a bonyolultabb átirányításokra.