Přesměrovávat dokumenty lze i jinak, například přes javascript, meta tagem atd. Výhodou přesměrování přes htaccess je, e ho správně zpracují vechny prohlíeče i vyhledávací roboti. Ostatní redirecty lze různě zakazovat, nemusí vůbec fungovat, nebo je právě roboti neumí/nechtějí následovat.
V tomto článku ukái pár jednoduích příkladů přesměrování a v přístím článku napíi jak pomocí htaccess udělat pěkný dynamický web.
Představte si situaci, e chcete přesunout stránku "stara.php" na "nova.html". Pomocí mod_rewrite to zařídí následující 2 řádky v souboru .htaccess:
RewriteEngine on
První řádek zapíná monost pracovat s knihovnou mod_rewrite. Druhý řádek řádek dělá vechnu práci.
RewriteRule stara\.php /nova.html [R=301]
To zpětné lomítko před tečkou ruí speciální význam tečky v regulárním výrazu.
Vimněte si, e druhá adresa je absolutní - začíná lomítkem. Adresa se píe absolutně od rootu webu.
Pokud by nebyla absolutně, brala by se relativně od sloky s daným htaccess souborem.
Popřípadě lze zapsat celou adresu, například:
RewriteRule stara\.php http://www.example.cz/nova.html [R=301]
Za zmínku stojí parametr/vypínač [R=301], ten říká, e se bude přesměrovávat (jedná se o trvalé přesměrování).
Pokud bychom jej nepouili, stránka by se nepřesměrovala na novou, ale jen by se místo staré stránky podstrčila nová.
Dalí příklady přesměrování pomocí htaccess.
Místo stránky "verejna.php", která ve skutečnosti vůbec nemusí existovat, se podstrčí stránka "podstrcena.html" a z hlediska
webového prohlíeče to vypadá, jako by ona veřejná stránka opravdu existovala a zobrazí se v ní obsah právě té podstrčené.
RewriteEngine on
RewriteRule verejna\.php /podstrcena.html
Parametr | Plný název | Popis |
[L] | Last | Dalí překlad adresy ji nebude poadován - pokud se adresa jednou přeloí, nebude se ji zkouet v dalích podmínkách. Zamezuje zacyklení. (Pokud například na sebe vzájemně přesměrujete 2 stránky, přesměrovávání by nikdy neskončilo...) |
[R] | Redirect | Dočasné přesměrování (302). |
[R=301] | Redirect 301 | Trvalé přesměrování. |
[QSA] | Query string append | Do výsledné adresy se má přidat i řetězec za otazníkem. |
[NC] | No case | Nerozliovat velikost písmen. |
Pokud chcete pouít více parametrů zároveň, jednodue je spojte, například [QSA,R=301]
$preklad_adres = array('kontakty' => '10', 'dalsi_stara_stranka' => 'nova', ...);
if (isset($_GET['page'] && array_key_exists($_GET['page'], $preklad_adres){
header('Location: /?page_id=' . $preklad_adres[$_GET['page']]);
exit;
}
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?trestina.cz
RewriteRule (.*) http://www.alie.cz/trestina/$1 [R=301,QSA,L]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?trestina.cz
RewriteRule (.*) http://www.alie.cz/trestina/$1 [QSA,L]
[1] Komentáře: dne 22.12.2007:
Zatím nejsou ádné komentáře. XD