Rewrite szabály, hogy minden kérést az index.php szolgáljon ki
Sziasztok!
Mit kell beírnom a .htacces fájlba, hogy minden kérést pl. az index.php dolgozzon fel (az alkönyvtárakban is)? Többek között azt szeretném elérni, hogy ne lehessen a böngészőben visszafelé lépkedni. Ha az URL nem kerülne kiírásra, az még jobb lenne.
Válaszaitokat előre is köszönöm.
■ Mit kell beírnom a .htacces fájlba, hogy minden kérést pl. az index.php dolgozzon fel (az alkönyvtárakban is)? Többek között azt szeretném elérni, hogy ne lehessen a böngészőben visszafelé lépkedni. Ha az URL nem kerülne kiírásra, az még jobb lenne.
Válaszaitokat előre is köszönöm.
RewriteRule . /index.php [L]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Ha tényleg mindent (így statikus állományok) az index.php-n keresztül szeretnél kiszolgálni, akkor a két
RewriteCond
szabályt hagyd el.Azt ne akard, hogy a history-t letiltod, mert a látogatóid sem fogják akarni. Az URL elrejtésről pedig annyit, hogyha a postaládád letakarod a szomszéd elől, a postás sem fog levelet hozni.
Miért, miért, miért?
A kérdésre visszatérve: nincs szükség htaccess-re a megoldáshoz. Amit védeni szeretnél (gondolom) az nem a statikus tartalom (képek), hanem a generált oldalak. (Persze lehet, hogy tévedek). Ha egy URLről szeretnéd elérni az összes tartalmat, akkor a klienstől kapott url-re nem hagyatkozhatsz. Az index.php-d olvashatná a session-ből az elküldendő file nevét. A session-be pedig egy másik php állítaná be pl:
A főoldal (amit az index.php generál):
Az index.php kiveszi a session-ből a "page" változót, és elküldi a kliensnek a kívánt fájlt. Így minden tartalom URL-je az index.php lett. A küldés közben a HTML fájl linkjeit átírhatjuk ezekre a setter.php-s linkekre, így egy transzparens védelmi réteget kapunk, a fájloknak semmit sem kell tudniuk róla.
Az md5-tel lényegében láírod a linkeket. A session-ben lehet egy "counter" változó is, ami mindig növekszik eggyel. Az md5 a kívánt page érték plusz a counter értéke md5-özve. Így nem használatja fel újra a korábban megszerzett url-eket, hiszen az már nem stimmelne a counterrel.
mi célt is szolgálna mindez?
Egy korábban - főként gyakorlási szándékkal - írt szoftveremet szeretném továbbfejleszteni. A célok nagyjából ezek:
- ne lehessen visszalépkedni (pl. a post-olt adatok se kerüljenek így újra küldésre)
- ne tehesse meg a user, hogy kézzel beírja a linket, és így olyan funkciót futasson, amihez bár van jogosultsága, de az adott helyről nem kéne lefutnia (pl.: a bejegyzes_megtekintes.php csak a bejegyzes.lista.php-ből fusson le a megfelelő linkre kattintva)
Referer check
Post
php fileok védelme?
lehet, hogy én értelmezem félre, de ebből ítélve arra gondolok, hogy te azt nem akarod, hogy a .php fájlaidat futtassák. legalábbis nem azt, amelyiket te nem szeretnéd. ha ez a helyzet, akkor a htaccess mégiscsak a barátod, méghozzá a nice url, rewrite mod környékén érdemes kapirgálni. (gyakorlatilag minden beérkező url-t átírsz, így az nem fog megfelelni a könyvtárstruktúrádnak, tehát nem éri el közvetlenül a .php filet)
kellemes hétvégét
a megfelelő linkre kattintva
Ha jól értem, ő azt szeretné, hogy csak a kijelölt navigációs ösvényen lehessen haladni. (Nem azt, hogy egyáltalán ne lehessen egyes url-eket megnyitni).
ehh
Miért nem megy?
Van még valami, amit be kellene állítani? (Localhost-on tesztelem mindezt, így mindenhez van hozzáférésem.)
mod_rewrite?
IF
nincs hibaüzenet
log
működik
Mi volt?
Már csak az a kérdés
a mod_rewrite működik...
Bár, ami tényleg fontos, azokra választ kaptam tőletek, többek közt a POST-olt adatok újraküldésének elkerülésére és a linkek védelmére.
Emellett járulékos haszonként megtanultam ezt-azt a .htaccess tényleges lehetőségeiről, így szép rövid URL-jeim lesznek és nem lesz igénytelen 404-es hibaoldalam. :)