Keresés

Új hozzászólás Aktív témák

  • cucka

    addikt

    válasz DNReNTi #17244 üzenetére

    A kérdésedre a válasz egyértelmű lesz, amint megérted, hogy mit is csinál a htaccess-ed.

    Röviden: a mod_rewrite apache modult használod. Ez arra jó, hogy ha bejön egy kérés a webszervernek, akkor azt bizonyos feltételek esetén átváltoztatja egy másik request-é.
    Például adott egy ilyen URL, hogy http://itcafe.hu/tema/php_kerdesek_2/hsz_17201-17300.html
    Valószínű, hogy ez nem egy létező filera mutat egy szerveren, hanem a mod_rewrite átírja valami hasonlóra:
    http://itcafe.hu/forum.php?name=php_kerdesek_2&from=17201&to=17300
    Csak példa, nem tudom, hogy működik valójában a RIOS..

    Alapesetben az Apache webszerver egy adott könyvtárban található fileokat tud kiszolgálni. Tehát fenti esetben ha nem lenne mod_rewrite, akkor a hsz_17201-17300.html nevű filet kerené az URL-ben megadott könyvtárban.
    A te esetedben ugyanez történik. Létrehozol egy rewrite szabályt, ami csak akkor teljesül, ha a hivatkozott tartalom nemlétező file és nemlétező könyvtár (ez a két RewriteCond). Az átírási szabály az átdobja a PHP-nek a kérést. (Ez a RewriteRule sor)

    Namost ez azt eredményezi, hogy MINDEN olyan kérést, ami egy nemlétező filera vagy könyvtárra mutat, azt át fogja dobni a PHP-nak. Ha írok egy szkriptet ami random fileokat kérdezget a szerveredtől, kb. mindegyik kérésem be fog hívni a php szkriptedbe (hacsak nem találom ki randomra egy létező file nevét a szerveren). Remélhetőleg innen te is össze tudod rakni, hogy az általad vázolt plusz szabály miért csak látszólagos megoldás a problémádra.

    A valódi megoldást már leírták, ha így akarod használni a mod_rewrite-ot, akkor a PHP le kell tudja kezelni a hibás request-eket is. Pl.

    <?php

    function isRequestValid(){
    //ezt neked kell megirni
    }
    if (!isRequestValid()){
    http_response_code(404);
    die();
    }

    //a program többi alkatrésze..
    ?>

  • wis

    tag

    válasz DNReNTi #17244 üzenetére

    Mivel a nem létező fájlnál továbbfut az index.php-ra ami létezik így 200. Innentől a te kódod felelőssége, hogy nem létező oldalnál 404-et dobjon.

    Egyes böngészők pedig automatikusan betöltik a /favicon.ico-t.

    Teória a kétszeres favicon betöltésre: mivel elsőre 200-as kódot kap, de a tartalom nem érvényes kép, így újra megpróbálja.

Új hozzászólás Aktív témák

Hirdetés