Hezké URL aneb mod_rewrite
20.02.2008Komentáře (0) Kategorie: Tvorba webu » SEO

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?cis­lo=$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 syntaxiRewri­teRule ;-).

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 :-D kdyžtak pište do komentářů.



Hodnocení: 7.5/10 (35 hlasováno)

Komentáře (0)
  Neregistrovaní uživatelé nemohou přidávat komentáře k článkům.