Az átirányítások alapfeltételei

A mod_rewrite modul engedélyezése

Az átirányításokat az Apache webszerver ún. mod_rewrite modulja végzi. A modul benne van a szerver alapkiépítésében, de külön engedélyezni kell a használatát. A legtöbb szerveren ezzel nincs probléma, a szervergazdák engedélyezni szokták.

Ha egy CMS rendszerrel felépített oldalhoz tartozó htaccess file-t nézünk, akkor nyakran azt tapasztaljuk, hogy az átirányításokat egy IfModule keretbe helyezik az alábbiak szerint:

<IfModule mod_rewrite.c>
#Ebbe a keretbe jön minden átirányítással kapcsolatos utasítás
</IfModule>

Ezt a keretszerkezetet azért használják, mert ha a mod_rewrite modul mégsincs engedélyezve, akkor minden átirányítással kapcsolatos utasítás érvénytelennek minősül, a weboldal egyáltalán nem jelenik meg, hanem 500-as kódú szerver oldali hibaüzenet. Ha az IfModule blokkba írják az átirányítási utasításokat, akkor amennyiben nincs engedélyezve a mod_rewrite, akkor nincs hibaüzenet, megjelenik a weboldal, csak éppen nem hajtódnak végre az átirányítási utasítások. A CMS rendszereknek ez többnyire jó, mert így olyan szerveren is tudnak működni, ahol a mod_rewrite nincs engedélyezve.

Ízlés kérdése, de én a saját oldalaimnál ellene vagyok az IfModule használatának. Szerintem tudni kellene, hogy azon a szerveren, ahol a saját oldalainkat tartjuk, be van-e kapcsolva a mod_rewrite vagy nem. Ha pedig másik szerverre költöztetjük az oldalt, ha rögtön 500-as hibát kapunk, akkor sokkal egyértelműbben, hamarabb rájövünk arra, hogy az új szerveren mi nem stimmel, mint ha napokig azon görcsölünk, hogy mi okozhatja azt, hogy az oldalunk egyes funkciói működnek, mások pedig nem.

Mindig használatos kódok

Az átirányítások használata esetén ezt a kódot mindig illeszük be a htaccess-be mindenféle átirányítás elé, htaccess file-onként egyszer:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteEngine on

A RewriteEngine on parancs - amennyiben a mod_rewrite használata a szerveren engedélyezve van - bekapcsolja, élesíti az átirányítási modult. Ennek a parancsnak a kiadása mindenképpen szükséges az átirányítás működéséhez.

Egyes esetekben ezek nélkül is működhet az átirányítás, de jobb, ha minden htaccess file-ba, ahol átirányítást akarunk megadni, ezt beletesszük.

Options +FollowSymlinks

Az Options +FollowSymlinks lehetővé teszi, hogy szimbolikus linkeket, rövidítéseket használjunk. A szimbolikus linkek használata mindenképpen szükséges a mod_rewrite működéséhez, bár magának a parancsnak a kiadása nem mindig elengedhetetlen, mert általában a fő konfigurációs file-ban is be van állítva, és öröklődik. Mindenesetre, ha azt a szabályt követjük, hogy mindig beírjuk a htaccess-be, valahányszor a mod_rewrite-ot használjuk, azzal sok kellemetlenséget előzhetünk meg. Érdeklődők számára itt van némi plusz olvasnivaló a FollowSymlinks-ről

RewriteBase /

A RewriteBase / utasítás a htaccess-ben azt határozza meg, hogy a relatív átirányításokat a főkönytárhoz képest kell értelmezni. Itt figyeljünk arra, hogy ha nem a főkönyvtárhoz képest adjuk meg az átirányítást, akkor nem "RewriteBase /", hanem "RewriteBase /konyvtarnev" a helyes megadás.

Egyelőre fogadjuk el ezt az alapszabályt az átirányítási elmélet olvasása során, később részletes példákkal illusztrálom, hogy is kell a gyakorlatban használni.