Átirányítás egyéb felhasználásai

Direkt linkelés tiltása

Főleg képeknél szokott gyakran előfordulni, hogy a képeinket úgy "lopják", hogy egy másik weboldalra közvetlenül a mi oldalunkról töltik be, azaz a html-ben az img src attribútumának a kép mi oldalunkon lévő címét adjak meg. Ilyenkor az egyszerű felhasználónak úgy tűnik, hogy a kép az ő oldalán van, de valójában a mi sávszélességünket használja.

Bár Magyarországon nem szoktunk fizetni külön a szerverről letöltött adatok nagyságáért, de külföldön gyakran előfordul, ezért célszerű lehet letiltani ezt az opciót. Erre a kód:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://sajatoldalunk.hu(/)?.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$ http://sajatoldalunk.hu/tiltottkep.jpg [R,NC]

Nézzük, mit is csinál ez pontosan! A harmadik sor a felsorolt kiterjesztésű file-okat átirányítja a tiltottkep.jpg nevű file-ra, azaz ezt jeleníti meg. Hogy mikor? Ezt a feltételt adja meg az első két sorban lévő feltétel. Ha a képre hivatkozó oldal nem üres (!^$) vagy nem a saját oldalunk.

Ez a módszer az esetek nagy részében működik, de nem mindig, ha a hivatkozó oldalt "meghamisítják", és üres hivatkozást mutatnak, akkor nem működik. Ez viszonylag ritkán fordul elő, úgyhogy nyugodtan bízzunk meg ebben a módszerben.

Aldomainek használata könyvtárakként.

Ha beregisztráltattuk az aaa.valami.hu, bbb.valami.hu, ccc.valami.hu domain neveket, de nem akarunk mindegyiknek külön webszervert létrehozni, és belsőleg mindent egy virtuális szerver alkönyvtáraiban akarjuk tárolni:

RewriteCond %{HTTP_HOST} ^(.*)\.valami\.hu [NC]
RewriteRule ^(.*)$ http://valami.hu/%1/$1 [L]

Ha átirányítani szeretnénk, akkor nyilván ugyanez a kód, csak a végén [R=301,L] flag van.

Ezen módszer alkalmazásához a htaccess önmagában nem elég, az is szükséges hozzá, hogy az aldomain DNS rekordja megfelelően be legyen állítva.

index.php megjelenites letiltása

A főoldal általában elérhető anélkül, hogy bármi be lenne írva a domain után, és úgy is, hogy közvetlenül beírjuk az index.php-t. Ez utóbbit nem mindig szeretnénk, sokszor célszerűbb lehet, ha az index.php változat "átirányítódik" az a nélküli változatra.

RewriteCond %{THE_REQUEST} index\.php
RewriteRule ^index\.php/?$ http://valami.hu/ [R=301,L]

A feltétel megadásánal nem adunk meg kezdetet és véget, csak annyit, hogy tartalmazza az index.php részt, és magában a RewriteRule-ban adjuk meg a pontos szabályt. Bár sok oldalon ettől bonyolultabb megoldást is bemutatnak, ez bőven elegendő, működés közben látható pl. ezen a példán.