Tento návod můe pomoci těm, kdo chtějí zásadně změnit strukturu www adres na svém webu.
Předpokládejme, e máte tvořeny adresy v některém z těchto tvarů:
www.example.cz/index.php?clanek=NAZEV
www.example.cz/nejaky_skript.php?clanek=NAZEV
www.example.cz/?clanek=NAZEV
a chcete je změnit na lépe vypadající:
www.example.cz/NAZEV.htm
Vyřeit se to dá podstrkáváním v .htaccess souboru a změněním vech skriptů (souborů) na serveru, aby odkazovali na nové (ty lépe vypadající) adresy. Ke změně doporučuji nějaký editor schopný funkce "hledat a nahradit v souborech" a regulárních výrazů, například opensource CodeBlocks a PSPad.
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*).htm
RewriteRule .* index.php?clanek=%1 [nc,L,QSA]
Tento kód htaccess poté podstrčí místo kadé .htm stránky na serveru skript index.php s přísluným parametrem.
Na to je třeba dávat pozor, pokud máte na serveru i jiné, opravdové .htm stránky.
Obejít to lze například pouíváním jiných koncovek - html, php nebo testováním, jestli soubor/sloka fyzicky existuje pomocí htaccess.
Výe popsaný kód htaccess je vhodný pro nové weby nezaindexované vyhledávači. Pokud ale je Vá web ji rozjetý, nebo ji na starou verzi adres vedou externí odkazy, je třeba myslet i na přesměrování původních adres na ty nové.
Je potřeba přesměrovat staré karedé odkazy na nové a místo těch nových zase podstrčit ty staré. Toho se mi ale bohuel nepodařilo docílit jen pomocí .htaccess - pokud někdo ví, jak zařídit, aby se to ve výsledku nezacyklilo, budu rád za komentář :).
Já to nakonec vyřeil přesměrováním těch starých adres pomocí php.
Moje výsledné řeení tedy pouívá jednoduchou strategii:
Můj skript index.php stále vykonává stejnou funkci, jen zobrazuje články podle nového parametru article .
Název tohoto parametru se nyní nezobrazuje v adresách a obvykle ho stačí změnit jen na jednom místě ve skriptu zobrazující články.
Upravený .htaccess soubor pro podstrkávání s novým parametrem article:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*).htm
RewriteRule .* index.php?article=%1 [nc,L,QSA]
Pokud tedy někdo přijde přes novou, správnou adresu, podstrčí mu to stránku index.php s novým parametrem a ta zobrazí článek.<?php if (isset($_GET["clanek"]))
{
$url="http://www.example.cz/".$_GET["clanek"].".htm";
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
die("<html><body> Dokument byl přesunut na <a href=\"".$url."\"> ".$url." </a></body></html>");
}
?>
Take ve zkratce - htaccess zaručí funkčnost nových adres a php přesměrování zajistí hladký přechod ze starých adres na nové.
[1] ALe dne 01.09.2008:
Děkuji moc mě to pomohlo.