meniny Dnes je: 8.2.2012, meniny má: Zoja

Blog

Mod rewrite
Mnohé stránky majú odkazovú štruktúru v tvare ?premenna=hodnota. Pomocou mod rewrite sa takýto tvar dá prepísať len na /hodnota
RewriteEngine  On 
RewriteBase  / 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/?$  ?premenna=$1
Výsledok odkazov je nasledovný: domena.sk/hodnota1. Samozrejme premenných môže byť viacej: ?premenna1=hodonota1&premenna2=hodnota2 Potom prepisovanie vyzerá nasledovne
RewriteEngine  On 
RewriteBase  / 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/?$  ?premenna1=$1 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/([^/]+)?/?$  ?premenna1=$1&premenna2=$2 
Výsledok odkazov je nasledovný: domena.sk/hodnota1/hodnota2. Pri troch premenných: ?premenna1=hodnota1&premenna2=hodnota2 &premenna3=hodnota3 sa prepisuje nasledovne
RewriteEngine  On 
RewriteBase  / 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/?$  ?premenna1=$1 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/([^/]+)?/?$  ?premenna1=$1&premenna2=$2 
 
RewriteCond  %{REQUEST_FILENAME}  !-d 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteRule  ^([^/]+)/([^/]+)/([^/]+)?/?/?$ 
?premenna1=$1&premenna2=$2&premenna3=$3
Výsledok odkazov je nasledovný: domena.sk/hodnota1/hodnota2/hodnota3. Pri takomto prepise niekedy dochádza k nenačítaniu obrázkov, štýlov. Pre opravu sa na začiatok stránky pridáva
<base
href="http://domena.sk">
KOMENTÁRE

1: Napísal: gombalia | 20. 5. 2011
dobry den, chcem sa spytat ako je mozne osetrit to ze ked v premennej nacitam stránku ktoru potrebujem zobrazit v index.php ako index.php?site=uvod teraz mi to prepisuje na /uvod. Problem je v tom ze ked teraz zadam za lomitkom hociaky vyraz tak mi zobrazi sice index.php (horne menu a lave menu) ale kontext ziadny, nevihodi to ziadnu chybovu stranku (404) iba cisty index.php. Da sa v htaccess osetrit neako ze by mi zistilo ci premenna site (/index.php?site=$1) skutocne existovala? A ak nie tak by hodilo 404 este doplnim kod nacitania kontextovej stranky z index.php "<?php if (!$_REQUEST['site']){$_REQUEST['site'] = "uvod";} include("sites/".$_REQUEST['site'].".php"); ?> " dakujme za odpoved

2: Napísal: DANO | 21. 5. 2011
V skratke: toto sluzi len na pekne URL adresy...nepeknu ?site=uvod skrasli na /uvod v htaccess sa podmienka ci existuje, ci nie neda spravit. Toto ja osobne riesim cez php if(file_exists(\"include/$_GET[strana].php\")) { include(\"include/$_GET[strana].php\"); } else { include(\"include/uvod.php\"); pricom htaccess zabezpecuje len upravu adresy. Nie je mi vsak jasne, preco nezobrazuje ziadny obsah, ked sa pouzije tvar s lomitkom...mate definovanu base href? }

Autor *

Web

Mail

captcha

Publikované: 19. 4. 2010 | prečítané: 1296x | komentárov: (2) | tagy: htaccess, mod rewrite, prepis, url,