Již nelze déle ignorovat Vaše četné žádosti o rady ohledně
mod_rewrite a přepisování URL
. Stručně
vysvětlím použití, ale teorii o tom, „k čemu to vlastně je“ nechám
na redaktorovi matqo a jeho seriálu o optimalizaci pro
vyhledávače (SEO).
Pro používání mod_rewrite potřebujete mít:
- samotný mod_rewrite na serveru Apache nainstalovaný a povolený
- povolený .htaccess
- tento návod

Použtí mod_rewrite
Otevřete / vytvořte si soubor .htaccess a do něj vložte direktivu pro spuštění mod_rewrite:
RewriteEngine on
Jako první Vám doporučuji nastavit přesměrování na verzi domény s www na začátku. Tedy když někdo do adresního řádku prohlížeče zadá tutorialy.com, přesměruje ho server na www.tutorialy.com. To je vhodné kvůli PageRanku, JyxoRanku a podobných, protože oba uvedené tvary adresy jsou z hlediska vyhledávače dvě rozdílné stránky. Přesměrování se provádí přidáním těchto direktiv do souboru .htaccess:
RewriteCond %{HTTP_HOST} ^tutorialy\.com
RewriteRule (.) http://www.tutorialy.com/$1 [R=301,QSA,L]
Direktiva RewriteCond je porovnávacím příkazem, který porovnává obsah proměnné (v tomto případě HTTP_HOST, která obsahuje adresu serveru) s požadovanou hodnotou (tutorialy.com). Stříška znamená začátek řetězce. Pokud je podmínka splněna, spustí se direktiva RewriteRule, uvedená hned na následujícím řádku. Syntaxe použitých direktiv je taková:
RewriteCond testovaný-řetězec regulární-výraz
RewriteRule co-presmerovat kam-presmerovat [pravidla]
Při přesměrování na verzi domény s www na začátku jsme použili pravidla R=301, což je přesměrování se stavovým HTTP kódem 301. Dále pravidlo QSA, který předává proměnné posílané metodou GET, tedy řetězec za otazníkem v URL. Pravidlo L říká, že je toto RewriteRule posledním a dále se nic nepřepisuje. Další často používaná pravidla jsou například F, posílající stavový HTTP kód 403 (zakázáno) a NC, který říká že nezáleží na velikosti písmen.
Nyní se dostáváme k podstrkávání URL. To probíhá velice jednoduše pomocí Vám již z vyšších řádků známé direktivy RewriteRule. Podstrčení stránky se v případě tohoto webu zapisuje například takto:
RewriteRule ^tutorial/(.)/(.) /index.php?cislo=$1&nazev=$2
Jednoduše řečeno – $1 je řetězec ukládaný do první (.) a $2 je řetězecukládaný do druhé (.). Zbytek jste určitě pochopili a pokud ne, tak siznova projděte začátek tutoriálu, obzvláště se zaměřte na pasáž o syntaxiRewriteRule ;-).
Né vždy je ale nutné předávat nějaké řetězce a tak ještě přiložím takový úplně jednoduchý zápis RewriteRule, ale předpokládám že by jste na něj již dokázali přijít sami:
RewriteRule ^o-nas(.) index.php?page=o-nas
Zde se žádný řetězec neukládá a při požadavku klienta na stránku www.tutorialy.com/o-nas server podstrčí stránku www.tutorialy.com/index.php?….
mod_rewrite se dá využít nejenom pro podstrkávání „falešných“ URL adres, ale také pro přesměrování například v případě, že jste původní soubor přejmenovali. V tomto případě vložíte do hranaté závorky na konec RewriteRule pravidlo R:
RewriteRule stara-stranka\.php nova-stranka.php [R]
Teď mám pocit, že jsem ještě něco zapomněl napsat… doufám že nic
kdyžtak
pište do komentářů.
Hlavní menu
Kategorie
Přihlásit
Anketa
Podporujeme
Přispějte na provoz