.htaccess - Akceptovanie špeciálnych znakov

Programovacie jazyky, rady, poradňa...
optimistavf
Novice
Novice
Príspevky: 3
Registrovaný: 02 sep 2010, 22:43

.htaccess - Akceptovanie špeciálnych znakov

Príspevok od používateľa optimistavf »

Zdravím, nastavujem .htaccess súbor a mám v ňom nastavené pravidlo na prepisovanie linku:

Kód: Vybrať všetko

RewriteRule ^(.*)$ index.php?url=$1 [NC,NE,QSA,L]
Potreboval by som uložiť celý reťazec, ktorý nasleduje po názve domény (http://www.domena.sk/retazec_blabla...) do premmenej $url. No problém je, že ak sa v reťazci nachádza otáznik, viacero lomítok za sebou, alebo znak &, popr. iný špeciálny znak (doteraz som to objavil iba pri týchto), tak sa do $url uloží iba začiatok textového reťazca až po tento znak. Čiže ak mám

Kód: Vybrať všetko

sekcia/objekt?akcia=delete
tak do premennej $url sa uloží len

Kód: Vybrať všetko

sekcia/objekt
Vedeli by ste poradiť prosím Vás? Respektíve, existuje nejaký iný spôsob na riešenie tohoto problému? Vďaka

//autoeditácia príspevku (29 Okt 2011, 20:44)
Práve sa mi podarilo nájsť riešenie, tak posielam, aspoň pre tých, čo by mali podobný problém v budúcnosti :)

.htaccess:

Kód: Vybrať všetko

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
A teda, prvý riadok na nastaví platnosť direktívy +FollowSymLinks, čo znamená, že v klientskom rozhraní existujú symbolické odkazy, ktoré sa odkazujú na publikované súbory na stránke, teda ich cesta je zatajená a maskovaná týmto symbolickým odkazom.
Direktíva RewriteEngine zapína možnosť prepisovania URL odkazu.
Ďalšie dve podmienky (RewriteCond) sa pýtajú či daná cesta (URL) odkazuje na reálny súbor alebo adresár, ak nie tak platí prepísanie (RewriteRule) všetkých -> ".*" vložených URL do stránky, čiže www.domena.sk/tu_moze_ist_hocico sa odkazuje vždy na index.php. A k tomuto "hociču" sa dostaneme cez premennú

Kód: Vybrať všetko

$_SERVER['REQUEST_URI']
v súbore index.php.

PS:Opravte ma ak som napísal niečo nesprávne.
Napísať odpoveď