.htaccess
Sziasztok
A segítségeteket kérném. A google jóbarátom és kb. 200 ezer megoldást találtam, viszont jobb lett volna 1 amit megértek és működik.
Szóval tudom sokaknak alap a kérdésem, de én most szeretném megtanulni.
A probléma: .htaccess fájl kezelése
Adott egy ilyen txt docum a gyökér könyvtárban:
RewriteEngine on
Options -Indexes
ErrorDocument 404 http://domain.hu/404.php
ErrorDocument 500 http://domain.hu/404.php
Adott egy oldal amin a tartalom változik aszerint, hogy az url-ben milyen id található.
Az url id alapján lekéri a blog címét, szövegét és egyéb adatokat. Amit szeretnék elérni, hogy az url ben ehelyett:
http://domain.hu/index.php?id=1
Ez legyen pl:
http://domain.hu/hogyan_fujjuk_ki_purhabbal_a_kocsi_aljat
Tehát az index.php?id=1 rész helyett az aktuális blog címe lenne.
Néhány esetben az url tartalmaz még egy adatot is miszerint (nem mindig):
http://domain.hu/index.php?id=1&felhasznalo=2
Összegezve: azt szeretném elérni, hogy az urlben a blog címe látszódjon, de a háttérben tudjam lekérni, kezelni a get adatokat.
Az adatokat mysql-ből kérem le, és a get adatokat urlencode-al kérem le ha ez számít ebben az esetben.
Köszönöm ha segítetek, szeretném megérteni a működését, hogy a későbbiekben ha bővítem az url-t más adatokkal, akkor is tudjam majd kezelni.
■ A segítségeteket kérném. A google jóbarátom és kb. 200 ezer megoldást találtam, viszont jobb lett volna 1 amit megértek és működik.
Szóval tudom sokaknak alap a kérdésem, de én most szeretném megtanulni.
A probléma: .htaccess fájl kezelése
Adott egy ilyen txt docum a gyökér könyvtárban:
RewriteEngine on
Options -Indexes
ErrorDocument 404 http://domain.hu/404.php
ErrorDocument 500 http://domain.hu/404.php
Adott egy oldal amin a tartalom változik aszerint, hogy az url-ben milyen id található.
Az url id alapján lekéri a blog címét, szövegét és egyéb adatokat. Amit szeretnék elérni, hogy az url ben ehelyett:
http://domain.hu/index.php?id=1
Ez legyen pl:
http://domain.hu/hogyan_fujjuk_ki_purhabbal_a_kocsi_aljat
Tehát az index.php?id=1 rész helyett az aktuális blog címe lenne.
Néhány esetben az url tartalmaz még egy adatot is miszerint (nem mindig):
http://domain.hu/index.php?id=1&felhasznalo=2
Összegezve: azt szeretném elérni, hogy az urlben a blog címe látszódjon, de a háttérben tudjam lekérni, kezelni a get adatokat.
Az adatokat mysql-ből kérem le, és a get adatokat urlencode-al kérem le ha ez számít ebben az esetben.
Köszönöm ha segítetek, szeretném megérteni a működését, hogy a későbbiekben ha bővítem az url-t más adatokkal, akkor is tudjam majd kezelni.
Némi keveredés van
Olyan példákat keress, ami tartalmazza:
<IfModule mod_rewrite.c>
Viszont fontos tudni, hogy egy RewriteRule nem fogja az id-t címre (vagy vissza) cserélni, mindössze a ? jel, az "index.php" és hasonló "csúnyaságok" "formázására" használható.
Például ha nem szeretném az URL-ekben látni az "index.php"-t ÉS a domain után folytatólagosan "/" jelekkel elválasztva (kvázi könyvtárként) szeretném megadni az egyéb paramétereket ÉS a keretrendszerem is alkalmas rá, akkor csinálhatok valami ilyesmit:
- Az elsődlegesen "megjelenítendő" tartalom az index.php.
- HA van RewriteEngine, akkor:
- Nézzük meg, hogy a kérés tartalmazza-e az index.php-t VAGY a bin könyvtárat
- HA igen: nincs átírási művelet, közvetlenül hajtsuk végre a kérést
- HA nem: adjuk oda a kérés stringet az index.php-nak egyetlen paraméterként egy ? jel után. Itt van szerepe a keretrendszernek, hogy annak routingja megfelelően le tudja-e kezelni így.
Mindezek után a keretrendszeren belül kell megoldanod azt, hogy mit kaptál a ? jel után. Azt is, hogy ha csak 1 paramétert, akkor az egy blog cím és kéne belőle blog_id-t keresni, és azt is, hogy ha 2 paraméter, akkor a második egy user_id.
Amennyiben a keretrendszer alkalmas rá, akkor egy ilyen url-ből:
http://domain.hu/hogyan_fujjuk_ki_purhabbal_a_kocsi_aljat/123
ki tudod válogatni, hogy:
- a "hogyan_fujjuk_ki_purhabbal_a_kocsi_aljat" részből keresned kell egy blog_id-t, ÉS
- mindezt a user_id = 123 felhasználó kérte.
Fontos tudni, hogy ehhez olyan keretrendszer kell, amelyik a / jelek mentén szétbontja a requestet szegmensekre, és mindig ugyanazt jelenti ugyanaz a szegmens. Tehát önmagában egy .htaccess / rewrite nem oldja meg.
Fontos tudni, hogy ehhez
$_SERVER['PATH_INFO']
-ban és onnantól tetszés szerint értelmezheti.+1
$_SERVER['QUERY_STRING']
értékét is megnézni.Ha már query string
$_GET
, vagy még inkábbfilter_input(INPUT_GET, ...)
és társai.