Hlavní navigace

Nezapomeňte přesměrovávat

10. 7. 2014 14:45 (aktualizováno) | Stanislav Puffler

Jedno z pravidel SEO optimalizace pro vyhledávače je nezapomenout přesměrovávat. Myslím tím samozřejmě běžné rewrites a to jak formou přesměrování, tak i podstrkávání obsahu. Na podstrkávání obsahu pozor – hodí se např. v situacích, kdy potřebujete nahradit nějaký nedostatek Vašeho CMS systému (publikační / redakční systém). Osobně jsem využil podstrkávání mnohokrát pro zajištění optimálního robots.txt v rámci vícejazyčného webu na vícero doménách, který je spravován pod jednou instancí administrace eshopu.

Pro tyto účely je možné využít možností modulu Rewrite (mod_rewrite) webového serveru Apache a to přímo v obsahu Vašich stránek díky souboru .htaccess. V sekci věnované právě mod_rewrite stačí nastavit podmínky pro přístupovou doménu (jazykovou mutaci webu / eshopu) a podle toho zobrazit vyhledávačům optimální soubor robots.txt – např vždy se správným odkazem na mapu stránek sitemap.xml bez toho, aniž byste museli do univerzálního robots.txt dávat odkazy na všechny jazykové mutace a jejich mapy stránek v XML. Obsah souboru .htaccess v dané sekci by pak mohl vypadat nějak takto:

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    # .COM - redirect to appropriate robots.txt
    RewriteCond %{HTTP_HOST} ^www.domena.com$ [NC]
    RewriteRule ^robots\.txt$ /robots-com.txt [L]

    # .CZ redirect to appropriate robots.txt
    RewriteCond %{HTTP_HOST} ^www.domena.cz$ [NC]
    RewriteRule ^robots\.txt$ /robots-cz.txt [L]

</IfModule>

Takový přístup byste použili v případě, kdy na anglické mutaci webu na vlastní doméně nemáte vůbec češtinu a naopak. Chcete, aby obě domény působily autonomně. V obsahu robots-com.txt pak odkazujete na anglickou verzi sitemap.xml (např. nazvanou sitemap-en.xml) a v českém robots-cz.txt by byl odkaz na českou mapu stránek (nazvanou třeba sitemap-cz.xml). Obsah začítku souboru robots-cz.txt by mohl vypadat nějak takto:

# Crawlers Setup
User-agent: *
Crawl-delay: 10

# XML Sitemap for searchengines
Sitemap: http://www.domena.cz/sitemapcz.xml

Pro anglickou verzi webu na vlastní doméně by obsah souboru robots-com.txt vypadal asi nějak takto:

# Crawlers Setup
User-agent: *
Crawl-delay: 10

# XML Sitemap for searchengines
Sitemap: http://www.domena.com/sitemap.xml

Toť vše. Robots.txt je dle mého názoru spolu se sitemap.xml zcela zásadním nástrojem každého webmastera a SEO specialisty. Umožní Vám do značné míry kontrolovat kam vyhledávač v rámci indexace pustíte a kam ne, jak často k Vám půjde, jak moc bude zatěžovat webserver svými nemalými dotazy a které parametry URLduplicitní adresy může s klidem ignorovat.

Kromě podstrkávání, které je v souboru .htaccess značeno díky nepoužití HTTP kódu 301 (Permanent Redirect), se v SEO oboru více využívá právě klasického přesměrování. Účelů k přesměrování URL adres je mnoho – změna URL architektury, změna domény webu a mnoho dalších a dalších důvodů. Pokud totiž významně změníte URL architekturu u webu, který je již zaindexován ve vyhledávačích, chvíli trvá než si vyhledávač svůj index aktualizuje (pokud vůbec – třeba máte-li vše nastaveno špatně, tak k tomu nemusí dojít nikdy).

V tomto ne zrovna ideálním mezidobí pak vyhledávač odkazuje uživatele na Vaše staré URL adresy a pokud nejsou správně na Vaší straně přesměrovány na nové URL, tak se uživatelé z vyhledávačů dostávají na nepříjemné „Chyba 404: Stránka neexistuje“. Přitom pokud byla např. původní URL dané stránky www.domena.com/cz/vyrobek a nová URL je www.domena.cz/vyrobek, tak stačí udělat prosté přesměrování v souboru .htaccess a je vystaráno. Uživatel (potenciální zákazník) ani nepozná, že jste dramaticky měnili URL architekturu nebo dokonce doménu české jazykové mutace webu a dostane se na konkrétní stránku, kterou hledal. Bez chyby, bez nutnosti vyhledávat na Vašem webu – prostě nepřijdete o znechuceného potenciálního zákazníka.

Pokud tedy např. víte, že jste českou jazykovou mutaci přesunuli ze subdomény nebo podadresáře /cz na doméně .com na českou doménu .cz, stačí vše přesměrovat v souboru .htaccess. Lze to udělat asi nějak takto:

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{HTTP_HOST} ^www.domena.com$ [NC]
    RewriteRule ^cz/(.+)$ http://www.domena.cz/$1 [L,R=301]

</IfModule>

Je to snadné a prosté, nemusíte vypisovat jednotlivé URL adresy, kterých může být na webu stovky i tisíce. Prostě napíšete podmínku a pravidlo pro přesměrování. Tato podmínka předpokládá, že v daném Document Rootu spravováno vícero domén a my chceme řešit přesměrování jen tehdy, pokud zákazník vstoupí na anglický web s doménou .com a chce si tam prohlížeč českou verzi stránek, která už je však nyní na vlastní .cz doméně.

Posledním takovým ukázkovým případem, kdy bychom v rámci SEO využili přesměrování je duplicitní obsah na dvou a více URL. Např. u Magento eshopu je problém v tom, že tzv. base_url je nejen www.domena.tld, ale také www.domena.tld/home (prostě CMS generuje home jako identifikátor domovské stránky a ještě jej chytře vkládá automaticky a bez jakéhokoliv stresu do sitemap.xml, který umí generovat). Úkolem webmastera v rámci optimalizace pro vyhledávače je pak takovou duplicitu obsahu eliminovat. Prakticky se to řeší buď přímo v robots.txt, kde bych prostě a jednoduše zakázal /home a to nějak takto:

# Nastaveni pro robota vyhledavace
User-agent: *
Crawl-delay: 10

# XML mapa stranek pro vyhledavace
Sitemap: http://www.domena.com/sitemap.xml

# Zakaze indexaci URL adresy /home
Disallow: /home/

Druhou cestou jak docílit eliminování takové duplicity je přesměrování. Nyní tedy už na úrovni .htaccess bychom udělali redirect /home na kořenovou složku (resp. Base_URL) webu. Ještě bychom si mohli udělat v hlavě trochu větší guláš tím, že existují i nějaké kanonické URL, ale to už je zcela nad rámec tohoto článku. O kanonických url píše jak Seznam.cz, tak i Google – dost se o kanonizaci dočtete také na Wikipedii.

Pokud máte vícero URL adres, které potřebujete přesměrovat, budou se Vám hodit znalosti některého ze skriptovacích jazyků (v kurzu jsou třeba Python, Perl, PHP nebo Ruby). Např. pokud je pro Vás důležité přesměrovat pouze URL adresy produktů v eshopu dle nové URL architektury, abyste nepřišli o zákazníky s vysokou pravděpodobností nákupu, pak k tomu lze s úspěchem využít třeba XML feed pro srovnávače zboží (máte-li jej) nebo lze vše vytahat přímo ze sitemap.xml. Ten si snadno rozparsujete a připravíte si seznam přepisů URL pro použití v .htaccess. Skript by mohl vypadat nějak takto:

<?php
/* Skript projde sitemap.xml CZ eshopu Domena.cz a
*  vytvoří ze stávajících URL přesměrování pro staré URL
*  na .COM -> .CZ pro využití v souboru .htaccess.
* 
*  Zabrání se tak na jedné straně indexaci těchto starých
*  URL ze strany vyhledávačů (zejména Google) a přesměrují
*  se automaticky i čeští zákazníci, kteří navštěvují na .com
**/

$xml=simplexml_load_file("sitemap.xml");

foreach($xml->children() as $child) {
  echo "Redirect " . str_replace("http://www.domena.cz", "", $child->loc) . " " . $child->loc . " [R=301,L]<br />";
}

?>

To by mohlo k přesměrování stačit. Prostě je důležité vědět, že existuje … že se hojně využívá v rámci SEO optimalizace pro vyhledávače a také, že k těmto hrátkám je potřeba něco vědět o webových serverech, modulu rewrite, souboru .htaccess a někdy se hodí i trocha toho skriptování.