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">
Pridať komentár k článku
DANO: 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? }
gombalia: 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