Egyéni kiterjesztésű PHP fájlok


Egyéni kiterjesztésű PHP fájlokGondolom nem vagyok egyedül, amikor azt mondom, hogy lassan kezdenek unalmassá válni a .php, .html, .asp és ehhez hasonló kiterjesztések az url-ek végén. Pár perc alatt “készíthetünk” egyéni kiterjesztéseket weben közzétett fájljainknak, ráadásul az eredeti fájl- és könyvtárstruktúra megtartásával.

Példának vegyük a következőt: szeretném, ha a weblapomon az unalomig ismert .php kiterjesztés helyett .blacky kiterjesztéssel kerülnének fel a fájljaim. Egyik – kézenfekvő – lehetőség, hogy átnevezgetem őket, azonban ekkor nem valószínű, hogy az Apache átküldi a php fordítón a fájlokat, és a korábbi linkelés többé nem fog működni, így például a Kedvencekbe mentett linkek 404-et adnának. (Persze az első problémát, a PHP feldolgozást, egy AddType direktívával .htaccess-ből vagy httpd.conf-ból megoldhatnánk)

Megintcsak az Apache-hoz készült mod_rewrite-ot fogjuk használni. Az adott könyvtárban hozzunk létre egy .htaccess fájlt, és töltsük fel a következő tartalommal:

1
2
3
4
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteRule (.+).blacky(\?[.+?])?$	$1.php$2
</IfModule>

Nézzük sorban: az IfModule rész (ami az és között található) csak akkor kerül értelmezésre, ha a megadott modul (esetünkben a mod_rewrite) megtalálható és be van töltve. Erre szükség van, mert ha nem kötnénk feltételhez a közte levő részt és a mod_rewrite nincs betöltve, akkor Internal server error-t kapnánk).

A következő sorban a RewriteEngine direktíva On értékre állításával bekapcsoljuk az újraírót, majd megadunk neki egy szabályt. Azoknak, akik jártasak a reguláris kifejezések (RegExp) világában, ismerős lehet. “Magyarra fordítva” a következő jelenti nagyjából: Ha a kért url bármilyen karakterből legalább eggyel kezdődik, majd van benne egy .blacky szöveg, majd van vagy egy kérdőjel után álló bármilyen sorozat vagy nem, akkor írd újra az url-t úgy, hogy a .blacky előtt álló rész mögé írj egy .php-t, majd ha valami állt a .blacky után, akkor azt a végére.

És így lesz mondjuk az /about.blacky url-ből /about.php, vagy a /hirek.php?hirazonosito=12-ből /hirek.blacky?hirazonosito=12.

Ezután már csak az oldalainkon található linkelést kell átírnunk, és kész is vagyunk az egyéniesített fájlnevekkel. Azon túl, hogy “személyesebbek” lehetnek a fájljaink még egy plusz biztonsági szintet is beépítettünk: még a PHP kézikönyv is ír az A PHP elrejtése c. fejezetében a fájl típus regtegetéséről. Nem nagy védelem, de ha már egy script kiddiet elijesztett oldalunk feltörésétől (vagy akár az erre tett kísérlettől) már hasznos volt.

Természetesen ennél még sokkal többet ki lehet hozni a mod_rewrite-ból, rengeteg további lehetőség van a mod_rewrite-ban…

Kapcsolódó bejegyzések:
  • Bizonyára már sokan törték a fejüket, hogy lehet pl. ehhez hasonló url-t készíteni:http://oldalam.hu/cikkek/hogyan_keszithetek_szep_url/ Számtalan leírás és …

  • A Gzip tömörítés (Gzip compression) igencsak felgyorsíthatja a lapodat letöltődési sebességét. Azt ugye talán mondani sem kell, hogy a lapok betöltődési ideje, …

  • Olvastam a .htaccess fájlról szóló cikket. Gondoltam megpróbálom én is az átirányítást megoldani. Sajnálattal vettem tudomásul, hogy semelyik tárhely (Enternet, …

  • Jöjjön most egy másik honlapgyorsítási lehetőség, az “expires”. Szintén a .htaccess-be kell beletenni és azt a célt szolgálja, hogy bizonyos fájltípusokat ne aka …

  • Mit is jelent?Összefoglalom a napi rutin részét képező teendőket és a preventív hosting lépéseket, amelyek néhány biztonsági résen keresztüli támadást meggát …

A cikket beküldte: BlackY ()

14 hozzászólás

  1. dzsoni says:

    ez nekem nem nagyon akar működni…

  2. Harder says:

    Ennél több infót légyszíves ne mondj, szeretnénk kitalálni, vajon mi lehet a probléma mert túl sok szabadidővel rendelkezünk és találgatni olyan izgalmas dolog. ;)

  3. dani says:

    hm nekem se akaar működni..
    Csináltam egy .htacces-t, abba bemásoltam amit írtál, aztán csináltam egy teszt.blacky-t és azt írja ki hogy 404 error.

  4. BlackY says:

    1. Milyen szerver? htaccess támogatás (Alow override a httpd.conf-ban) van? mod_rewirte van?
    2. A fenti lényege pont az, hogy nem teszt.blacky-t csinálsz, hanem teszt.php-t, csak a böngészőből hívod meg teszt.blacky néven!

    BlackY

  5. Stageline says:

    Nincs benne a RewriteBase / azért nem működött nekik.

    RewriteEngine On
    RewriteBase /
    RewriteRule (.+).blacky(?[.+?])?$ $1.php$2

  6. adams says:

    általában az ingyenes szolgáltatók nem engedélyezik a .htacces használatát. szóval lehet, h emiatt van a gondod.

  7. Krisztián says:

    Üdv!
    Nekem működik ez az új fájl, de megoldható lenne az, hogy a .php kiterjesztést letilthassam, hogy a böngésző azt ne tudja megnyitni, vagy 404-et dobjon, és csak az uj kiterjesztést engedje (pl. index.blacky-t igen, és az index.php-t már ne)
    Köszönöm…

  8. BlackY says:

    Helló!

    Így reggel az első kávé közben az egyetlen épelméjű megoldás, amit ki tudtam találni, hogy elrejted a php fileokat: fogod az összeset, bedobálod egy hidden vagy akármi könyvtárba, és átírod a htaccess-t:

    1
    2
    3
    4
    5
    6
    
    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	RewriteBase /
    	RewriteRule	^$	index.blacky [R=permanent,L]
    	RewriteRule (.+).blacky(?[.+?])?$	hidden/$1.php$2
    </IfModule>

    Sajnos ha letiltod a *.php-hez a hozzáférést (Order deny,allow, deny from all), akkor a .blacky néven keresztül sem lehet elérni… A fenti .htaccess 404-et dob a sima php kérésekre, viszont ha egy url-be bekerül a hidden/ (vagy akármi) is, akkor gond nélkül megnyitja :(

    BlackY

  9. Rush says:

    Üdv. Én is megpróbáltam ezt a kis trükköt, de nekem maradt minden .php
    lásd: http://stoppage.szunyi.com/news.php
    és engedélyezett a .htaccess, mert nem ír ki hibaüzenetet.

  10. Squito says:

    És mi van, ha:

    1
    
    AddType application/x-httpd-php .php .blacky

    RewriteEngine-nel csinálva nekem így tökéletesen működött:

    1
    2
    
    RewriteEngine On
    RewriteRule ^(.*).blacky(.*)$ $1.php$2 [L]
  11. gyuri says:

    Hát sajnos ez nekem se akar menni akár melyiket próbáltam pedig ez tényleg jó ötlet.

  12. gyuri says:

    juj bocsánat fegyelmetlen voltam.Működik tökkéletesen köszönöm szépen neked.

  13. Raim says:

    Én például a okhost.nál tároltatom a weboldalamat, és gond nélkül müködik. Csinálsz egy .htaccess filet. tehát simánt megnyits egy jegyzettömböt belemásolod a legfelül (

    1
    2
    
    	RewriteEngine On
    	RewriteRule (.+).blacky(\?[.+?])?$	$1.php$2

    ezt. és elmented .htaccess így. és megvan, a másik a weboldalon nem úgy nyitsz meg egy linket hogy index.php hanem index.blacky és már müködni is fog, a másik hogy ilyenkor ajánlatos minden oldalba egy
    ilyet rakni, és behívni egy php fileból a navigációt, mert elég kényes lehet minden html-php filet módosítani, főleg ha az oldal nem 3-4 php/htmlből ál. remélem ennyivel tudtam segíteni :). Üdvözlettel Raim(oldalam http://wowaddon.clanbazis.com/index.wowaddon)

  14. Darklight says:

    Nekem ez bevállt:

    1
    2
    3
    4
    
    	RewriteEngine On
    	RewriteBase /
    	RewriteRule ^$ index.pc [R=permanent,L]
    	RewriteRule (.+).pc(\?[.+?])?$ file/$1.php$2

    csak ennyi a gondom vele h pl a domain.com/test/alma.pc-re nem hoz be semmit mert a gyökérkönyvtárból kezdi el a file/ valamit ezt h lehet megoldani?

Szólj hozzá
a Egyéni kiterjesztésű PHP fájlok c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>