.HTACCESS, tiszta URL

.HTACCESS, tiszta URL
2011-05-22T19:55:04+02:00
2011-06-28T13:20:17+02:00
2022-07-19T03:00:28+02:00
antirex
Az honlapom úgy van kialakítva, hogy minden (a htdocson belül) 1 szinten van. Minden az index.php-n megy, de sokszor POST helyett GET értékeket használok, ahol megnő az URL hossza. Ezért mindent szeretnék elrejteni a felhasználók elől, ami a domain után van.
Mutasd a teljes hozzászólást!
Szia!
Igen, mert nincs is mit megvállaszolni.
Tiszta URL-re gondolsz, az a bajod, hogy tul sok a GET.
Akkor küld POST -ba, igaz így nem tudják könyvjelzőzni.
Viszont ez inkább ahogy írtad prog.hu -s téma, PHP-SZERVER-HTTP
De ha nem tetszik a GET/POST és RewriteEngine -t szeretnéd használni akkor komolyabban hozzá kell nyúlnod a forráshoz.
.htaccess:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA]
Ekkor ha beírsz valamit, ami nem található akkor az az idnex.php -ra fog mutatni.
Ezután tudsz trükközni.
$_SERVER['REQUEST_URI'] <= változóba kapod meg a domain név után szereplő részt.
pl.: http://www.minta.hu/shop.html => $_SERVER['REQUEST_URI'] == '/shop.html'
vagy is a /shop.html -t úgy kell kezelni mint ha /index.php?mode=shop -lenne.
De mennyünk tovább...
Ugyebár itt vannak termékek, és a Rövid hivatkozásoknak az a lényege, hogy az URL -ből megtudjuk mondani mire is mutat.
Vagy is Létre kell hoznod egy adatbázist, aminek segítségével, tudod követni hol is van.

Egy lehetséges kivitelezés:
pl.: http://www.minta.hu/shop/termekem.html
$_SERVER['REQUEST_URI'] == '/shop/termekem.html'
$ReURL = str_replace(Array('.html','.htm','.php'),'',$_SERVER['REQUEST_URI']); <= leveszük a kiterjesztés
(A .html,.htm végződésre azért van szükkség hogy a google indexelje)
Ekkor a $ReURL == '/shop/termekem'.
$ReURL = explode('/',$ReURL); <= felbontjuk részekre.
Ekkor:
$ReURL[0] == ''
$ReURL[1] == 'shop'
$ReURL[2] == 'termekem'

Vagy is $_GET['mode'] = $ReURL[1].
$_GET['itemid'] = ($ReURL[2] termék ID -je) <= termék ID -jét MySQL lekérésel tudod megkapni).

Amire figyelj!!!
A $_SERVER['REQUEST_URI'] értéke UTF-8!
Kis és nagy betük lehetségesek, de célszerű, mindig kicsit használni, ehhez karaktereket cserélni!!!
$nagy_hu = Array('Á','É','Í','Ó','Ö','Ő','Ú','Ü','Ű');
$kicsi_hu = Array('á','é','í','ó','ö','ő','ú','ü','ű');
$_SERVER['REQUEST_URI'] = str_replace($nagy_hu,$kicsi_hu,strtolower($_SERVER['REQUEST_URI']));
Sőt!!! a legjobb ha kerülöd az ékezetes, és a speciális karatereket is az URL -ből...
A speciális URL -t tárolod, a termékkel, és az alapján tudod be azonosíteni.

De az hogy neked hogyan lehetne egyszerűen megcsinálni, felépíteni, az függ a használt kódtól is.
Sokk sikert!
Mutasd a teljes hozzászólást!

  • Akkor mindent POST -ban küldj.
    Ez Statikus része a weblapnak
    Mutasd a teljes hozzászólást!
  • Nem véletlen van GET-tel.

    Alapból ugye index.php-val indul,
    aztán bejelentkezés ?mode=login, felhasználói felület mode=account contact form mode=contact,
    aztán a komplikáltabbak, mode=shop&itemid=2&a=0, ...

    Így lehet linkelni a változóval. POSTnál nem lehet. Gondolj bele, ha ezt a terméket meg akarod nézni többször, kedvencekhez adod vagy akármi, mode=shop&itemid=2&a=0 -re két eset van:
    1: index.php -> bejelentkezés után mindig POST shop POST itemid POST a
    2: index.php?mode=shop.... stb.
    nem ragoznám tovább

    amúgy nem gondoltam, hogy ezen a fórumon senki nem ért ehhez - proghun már 1 perc alatt megválaszolták volna, oké rewriteCond, ez meg az - de ott ez a téma határeset. Igazán egyik fórumra se illik. Na mind1. Egy választ várok még mindig.
    Mutasd a teljes hozzászólást!
  • Szia!
    Igen, mert nincs is mit megvállaszolni.
    Tiszta URL-re gondolsz, az a bajod, hogy tul sok a GET.
    Akkor küld POST -ba, igaz így nem tudják könyvjelzőzni.
    Viszont ez inkább ahogy írtad prog.hu -s téma, PHP-SZERVER-HTTP
    De ha nem tetszik a GET/POST és RewriteEngine -t szeretnéd használni akkor komolyabban hozzá kell nyúlnod a forráshoz.
    .htaccess:
    RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA]
    Ekkor ha beírsz valamit, ami nem található akkor az az idnex.php -ra fog mutatni.
    Ezután tudsz trükközni.
    $_SERVER['REQUEST_URI'] <= változóba kapod meg a domain név után szereplő részt.
    pl.: http://www.minta.hu/shop.html => $_SERVER['REQUEST_URI'] == '/shop.html'
    vagy is a /shop.html -t úgy kell kezelni mint ha /index.php?mode=shop -lenne.
    De mennyünk tovább...
    Ugyebár itt vannak termékek, és a Rövid hivatkozásoknak az a lényege, hogy az URL -ből megtudjuk mondani mire is mutat.
    Vagy is Létre kell hoznod egy adatbázist, aminek segítségével, tudod követni hol is van.

    Egy lehetséges kivitelezés:
    pl.: http://www.minta.hu/shop/termekem.html
    $_SERVER['REQUEST_URI'] == '/shop/termekem.html'
    $ReURL = str_replace(Array('.html','.htm','.php'),'',$_SERVER['REQUEST_URI']); <= leveszük a kiterjesztés
    (A .html,.htm végződésre azért van szükkség hogy a google indexelje)
    Ekkor a $ReURL == '/shop/termekem'.
    $ReURL = explode('/',$ReURL); <= felbontjuk részekre.
    Ekkor:
    $ReURL[0] == ''
    $ReURL[1] == 'shop'
    $ReURL[2] == 'termekem'

    Vagy is $_GET['mode'] = $ReURL[1].
    $_GET['itemid'] = ($ReURL[2] termék ID -je) <= termék ID -jét MySQL lekérésel tudod megkapni).

    Amire figyelj!!!
    A $_SERVER['REQUEST_URI'] értéke UTF-8!
    Kis és nagy betük lehetségesek, de célszerű, mindig kicsit használni, ehhez karaktereket cserélni!!!
    $nagy_hu = Array('Á','É','Í','Ó','Ö','Ő','Ú','Ü','Ű');
    $kicsi_hu = Array('á','é','í','ó','ö','ő','ú','ü','ű');
    $_SERVER['REQUEST_URI'] = str_replace($nagy_hu,$kicsi_hu,strtolower($_SERVER['REQUEST_URI']));
    Sőt!!! a legjobb ha kerülöd az ékezetes, és a speciális karatereket is az URL -ből...
    A speciális URL -t tárolod, a termékkel, és az alapján tudod be azonosíteni.

    De az hogy neked hogyan lehetne egyszerűen megcsinálni, felépíteni, az függ a használt kódtól is.
    Sokk sikert!
    Mutasd a teljes hozzászólást!
  • de szép levezetést írtál
    az ékezetekkel nem lesz gond, egyrészt angol holnap, másrész rá vagyok már állva a kisbetűs angol abcre
    ha jól értem az index.php-n kívül semmi nincs most indexelve, ez esetben tényleg sürgős a beavatkozás
    nekiállok a kivitelezésnek
    Mutasd a teljes hozzászólást!
abcd