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í všechny 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á možnost pracovat s knihovnou mod_rewrite. Druhý řádek řádek dělá všechnu 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.
Všimně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 složky 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 nepoužili, 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 požadován - pokud se adresa jednou přeloží, nebude se již zkoušet 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 | Nerozlišovat velikost písmen. |
Pokud chcete použít více parametrů zároveň, jednoduše 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