Základní informace, jak vyhledávač funguje, s jakými problémy se při své práci potýká a jak docílit, aby Vaši stránku (na ten správný dotaz) určitě nalezl.
Jak vyhledávač funguje
Vyhledávač pochopitelně neprochází celý Internet po každém uživatelském dotazu. Místo toho vyhledávač projde Internet jen jednou a informace o jednotlivých stránkách uloží do své speciální databáze. Při každé odpovědi na uživatelský dotaz se pak pracuje pouze s touto databází a žádné jiné údaje (včetně aktuální podoby stránky) nemá vyhledávač k dispozici.
Jak vyhledávač stránku objeví
Autor nemusí svou stránku žádným způsobem přihlašovat.
Robot vyhledávače začne "pátrání" zadanými "startovními" URL, což jsou adresy registrované v katalogu portálu a adresy typu www.<jméno>.cz získané z databáze domén.
Poté, co začne "pátrat", má robot jakožto automat jedinou možnost: následovat odkazy ze stránek, které už zná. Jako automat také poctivě projde opravdu všechny takové možnosti - i ty člověkem už dlouhou dobu nepoužívané.
Jaké problémy se mohou při hledání stránky vyskytnout?
Vyhledávač Vaši stránku nenašel
Je stránka v doméně .cz? Některé vyhledávače se omezují pouze na národní doménu .cz a jiné stránky nezaznamenávají, byť by byly v češtině a z českých stránek na ně vedl odkaz.
Jak stará je Vaše stránka? Údaje v databázi se podle typu stránky obnovují jednou za 3 dny až měsíc, pozdější změny nelze registrovat dříve než při dalším průchodu. Pomocí prefixu URL v pokročilém vyhledávání můžete přesně zjistit, jestli danou stránku vyhledávač už v databázi má nebo nebo ne. Příklady viz níže.
Vyhledávač našel Vaši "tajnou stránku", případně spustil nějaký skript
Gatherer poctivě prochází všechny odkazy, proto je nebezpečné, pokud máte z veřejně přístupných stránek nechráněný odkaz například na administrační systém. Že žádný takový není? Vyhledávač Vám sám umí odpovědět, odkud se na danou adresu dostal, stačí v pokročilém vyhledávání zadat dotaz:
LINK "http://moje.adresa.co.nema.byt.pristupna.cz/tajny/adresar/"
Pokud chcete zjistit jen, zda je určitá stránka vyhledávači známa, zadejte dotaz podobný následujícímu (opět v pokročilém vyhledávání):
URL "http://moje.adresa.co.nema.byt.pristupna.cz/tajny/adresar/"
Pro hledání URL v databázi vyhledávače Vám může pomoci ještě příkaz DOMAIN, který vrátí všechna dokumenty s URL v zadané doméně. např. pomocí následujícího dotazu můžete jednoduše zjistit "cizí" odkazy na Vaši stránku:
LINK "http://www.mojedomena.cz/adresar/stranka.html" AND NOT DOMAIN "mojedomena.cz"
Samozřejmě pokud určitě nechcete, aby existoval přístup na určité stránky, je nejbezpečnější je chránit heslem. Občas ale chcete přístup na určitou stránku nebo do některého adresáře zakázat pouze vyhledávacím automatům, zatímco uživatelé by měli mít přístup volný, bez hesla. Jak odlišit člověka a automat? Obecně se jedná o složitý problém, obzvlášť pokud nechcete uživatele odradit složitou procedurou "přihlašování". Situace je jednodušší u vyhledávacích automatů, neboť existují dvě možnosti, dva standardní způsoby, jak vyhledávači říci "Tudy ne, příteli!"
Omezení pomocí robots.txt
Pokud existuje soubor robots.txt v kořenovém adresáři serveru (např. http://server.v-domene.cz/robots.txt), tak se při stahování dokumentů z tohoto serveru řídí vyhledávač pravidly v něm specifikovanými.
Pozn.: pojmy "server", "adresář", "cesta" jsou zde myšleny z hlediska URL, nezávisle na tom, jak je daná struktura fyzicky realizována, např. jestli je více "serverů" umístěno společně na jednom fyzickém stroji nebo jestli odpovídá cesta v URL cestě k dokumentu na disku.
Přesný popis syntaxe a použití robots.txt je uveden v dokumentu http://www.robotstxt.org/wc/norobots.html, zde si popíšeme základní principy a pravidla:
Soubor robots.txt je textový soubor skládajíci se z jednoho nebo více záznamů. Každý záznam začíná nejdříve řádky
User-agent: <jméno agenta>
Tyto řádky určují, kterých robotů se následující zákazy týkají, např. robot Morfea se hlásí jako "holmes". Nejčastější je hodnota "*" určující všechny roboty. Další řádky jsou ve tvaru
Disallow: <část relativní URL>
a určují, kterých (relativních) URL si nemá robot všímat. Všechna URL na tomto serveru, jež začínají uvedeným řetězcem (nezapomenout na lomítko na začátku!), nebude automat stahovat. Příklad:
User-agent: * Disallow: /prvni Disallow: /druhy/
Zde jsme specifikovali, že žádný robot nesmí stahovat URL začínajíci na "/prvni" (tedy "/prvni_pokus.html" i "/prvni/index.html"), zatímco druhý řádek označuje díky koncovému lomítku jen např. "/druhy/stranka.html" a soubor "/druhy_pokus.html" tedy může být robotem stažen.
Nevýhoda (ale i výhoda) souboru /robots.txt spočívá v tom, že existuje pouze jeden, v kořenovém adresáři, takže k němu má většinou přístup pouze systémový správce. Proto existuje ještě druhá možnost, specifikovat pravidla pro roboty přímo v HTML stránce.
Omezení pomocí tagu META
Popis se nachází na WWW konsorcia w3c, konkrétně na adrese http://www.w3.org/Search/9605-Indexing-Workshop/ReportOutcomes/Spidering.txt a v dodatku B specifikace HTML. Tam naleznete i jiné možnosti využití tagu META zmíněné v další kapitole.
Tag META pro omezení robotů:
<META NAME="ROBOTS" CONTENT="...">
Kde hodnota CONTENT může obsahovat:
- INDEX nebo NOINDEX
- automat smí (nebo nesmí) tuto stránku přidat do své databáze
- FOLLOW nebo NOFOLLOW
- automat smí (nebo nesmí) následovat odkazy uvedené na této stránce
- ALL
- totéž co "INDEX, FOLLOW", prázdná hodnota má také význam ALL
- NONE
- totéž co "NOINDEX, NOFOLLOW", tj. úplně ignoruj tuto stránku
Omezení komentářového spamu
Někteří uživatelé jsou schopni vkládat po celém internetu nesmyslné nebo reklamní texty. Hnáni vidinou lepšího umístění ve vyhledávačích, díky velkému množství zpětných odkazů, přidávají bezhlavě adresy svých stránek. Nyní již existuje obrana.
Jednoduchá obrana
Autoři stránek, redakčních systému nebo webmasteři se mohou jednoduše bránit. Odkaz, který bude mít navíc atribut rel s hodnotou nofollow, bude vyhledávačem ignorován. Komentářoví spammeři ztratí důvod, proč nevyžádané příspěvky vkládat.
Příklad použití
Pozměněný odkaz:
<a href="http://www.nejakestranky.cz/" rel="nofollow">nejake stranky</a>Pro uživatele se nic nemění. Vyhledávač bude odkaz ignorovat a při hodnocení kvality stránky jej nebude brát v úvahu. Cílová stránka nedostane žádné negativní hodnocení.
Použití je vhodné na stránky s diskusními fóry, kam přispívají uživatelé a autor stránek nad odkazy nemá kontrolu. Tento atribut je možné použít i v případě, pokud potřebujete zakázat indexaci jednoho konkrétního odkazu ve stránce.
Jaké stránky zakázat
Kromě stránek s interním obsahem jsou některé obecné zásady, jaké stránky by webmaster měl ze stahování pro vyhledávač vyloučit. Jedná se zejména o vyřešení duplicit, kdy je na různých URL stejný obsah. To je samozřejmě v některých případech žádoucí (např. mirroring), ale nemělo by se stávat, aby různá URL vedla ve výsledku na stejný fyzický dokument (stejný fyzický stroj a soubor). Je celkem častá situace, kdy si lidé vyměňují odkazy na důležitý dokument, až nakonec zjistí, že oba (pod různými URL) myslí totéž. V takovém případě je dobré se zamyslet nad významem zkratky URL (Uniform Resource Locator) a zvážit, jestli by nebylo lepší, aby měl dokument jednu adresu a ostatní URL na tuto adresu přesměrovaly.
Známé příklady konkrétních problémů:
- více URL pro jeden dokument, více domén se stejným obsahem
- používá se zejména pro reklamní účely. V tomto případě je důležité, aby
existovalo jedno základní URL a všechny ostatní byla na toto URL
přesměrované. Pokud to není možné, tak v konfiguraci WWW serveru zařídit,
aby všechna URL kromě jednoho obsahovala /robots.txt s řádky
User-agent: * Disallow: /
- prefixy URL pro překódovače češtiny
- Vyhledávač si při ukládání do databáze převádí všechny stránky do
jednoho kódování (UTF-8), takže není žádoucí, aby se indexovaly stránky se
stejným obsahem lišící se pouze kódováním češtiny. Proto je nutné pomocí
souboru /robots.txt vyloučit URL s prefixem kódování, např:
User-agent: * Disallow: /win/ Disallow: /iso/
- Odkazy s náhodnými parametry
- používají se zejména pro odkazy na reklamu apod. Pokud není možné
přestat takové odkazy používat, je nutné zakázat jejich automatické
stahování, jinak by byly zbytečně staženy mnohokrát, pokaždé s jiným URL. I
když vyhledávač pozná, že už stránku (její obsah) zná, zařadí její každou
adresu do své databáze, protože nelze rozhodnout, která je původní,
základní. Pak uživatel dostane jako odpověď na svůj dotaz i tisíce
"stránek", ale všechny stejné.
- Ukládat SessionID do URL?
- Je vhodné pamatovat na to, že pokud je součástí URL i sada parametrů,
vytváří pak každá změna hodnoty parametru novou URL, kterou se robot snaží
stáhnout. A to i přesto, že hodnota parametru nemá vliv na obsah stránky.
Často se tento problém vyskytuje např. při používání tzv. SessionID v URL.
Svou podstatou se z pohledu robota jedná o stejný problém jako Odkazy s náhodnými parametry (viz předchozí bod) a je tedy nutné zabránit vyhledávači, aby se pokoušel takováto URL stahovat. Jedno z možných řešení je podobné jako řešení problému jednoho dokumentu v různých kódováních češtiny: URL se SessionID uvozovat (virtuálním) adresářem a ten následně zakázat v robots.txt.
Například předpokládejme URL:
http://server.v.cz/adresar/stranka.html
Pak stejná stránka pro přihlášené uživatele může mít tvar:
http://server.v.cz/_prefix/adresar/stranka.html?sessID=a5623934bd6c3a3e29fa3
A v souboru robots.txt bude záznam:
User-agent: * Disallow: /_prefix/
Problémy s přesměrováváním
Předně poznamenejme, že skutečným přesměrováním se rozumí pouze odpověď WWW serveru se Status kódem typu 3xx (např. 307 = Temporary Redirect). V položce Location v HTTP hlavičce dokumentu pak musí být absolutní URI - viz. RFC2616, kap. 14.30.
Nesprávně používaná možnost je META tag
<META http-equiv="refresh" content="time,URL">
Kde time je počet vteřin, za jak dlouho má prohlížeč přejít na URL. Tato možnost "přesměrování" je už ve specifikaci HTML označena jako jen částečně podporovaná a je doporučeno na ní nespoléhat. Mimo jiné odporuje základní filosofii HTML, že prohlížeč může ignorovat neznámé tagy nebo jejich neznámé atributy. Pokud chcete provést skutečné přesměrování, vždy používejte HTTP redirect zmíněný výše.
Poznámka: Morfeo použije hodnotu URL v takovém META tagu jako obyčejný odkaz, tj. přidá ho k ostatním odkazům, které ze stránky vedou, a stránku dále zpracovává. Pokud nechcete, aby Morfeo dokument zpracoval, musíte použít /robots.txt nebo příslušný META tag.
Jak se hledají slova
Když už vyhledávač stránku nalezl, musí z ní získat text, ten rozdělit do slov a výsledky uložit do databáze. V tom mu brání rozličné chyby v HTML stránkách i jejich HTTP hlavičkách.
Nezapomínejme, že vizuální výsledek na obrazovce jednoho prohlížeče nemusí ještě znamenat správně napsanou HTML stránku. HTML by se mělo kontrolovat, např. validátorem konsorcia w3c. Slabší kontrola je např. zobrazením v některém z textových prohlížečů (lynx, links, w3m).
Problémy s kódováním češtiny
Aby mohl vyhledávač text získat, musí mít v prvé řadě správnou informaci o znakové sadě (=character set, encoding). Správce WWW serveru má povinnost zajistit správné vyplnění položky content-type v HTTP hlavičce dokumentu (=odpovědi serveru) včetně parametru charset. V HTTP/1.1 má odesílatel (WWW server) povinnost charset uvést pokaždé, když není roven ISO-8859-1 nebo jeho podmnožině (např. US-ASCII) a klient (prohlížeč) má povinnost se uvedeným údajem řídit - NEMÁ hodnotu ignorovat a sám se pokusit znakovou sadu uhádnout. Viz RFC2616, kap. 3.4, resp. 3.4.1 a 3.7.1.
Druhý problém s určením znakové sady dokumentu spočívá v jeho uvedení i ve stránce v tagu META, resp. v jeho časté nesprávnosti. I pokud byl původně správně, po (automatickém) použití překódovače češtiny (saczeck, mod_czech aj.) už informace v tagu META nemusí být správná a natropí tudíž více škody než užitku. Jelikož je v HTTP/1.1 povinná informace o charset v položce Content-type, je informace v tagu META její kopií (pokud jsou správně) a tudíž je lepší, pokud se nevyskytuje vůbec.
Časté chyby v syntaxi HTML
- neuzavřený komentář
- text stránky od začátku komentáře dále se ignoruje
- chybějící uvozovky
- pokud chybí koncové uvozovky za hodnotou některého atributu, je následující text (až po první uvozovky) chápán jako hodnota atributu, což jistě nebyl autorův záměr.
- obrázky bez ALT textu
- často opomíjené, přitom povinné (viz Specifikace HTML, všimněte si slůvka "REQUIRED") a pro vyhledávač důležité informace, obzvlášť pokud je obrázek zároveň odkazem. Tyto informace ostatně nejsou důležité jen pro roboty, stačí si takovou stránku např. prohlédnout v textovém prohlížeči, vypnout si v prohlížečí zobrazování obrázků nebo se jít podívat, jak si WWW stránky "prohlížejí" slepci pomocí převodu na hlasový výstup. Pak takové obrázkové menu bez ALT textů...
- prázdné stránky s rámci
- Pokud stránka s rámci neobsahuje žádný smysluplný text v části NOFRAME, nemůže pak být správně zaindexována. Zkuste si vyhledat, kolik naleznete dokumentů se skoupou hláškou "Vás prohlížeč nepodporuje"... Není mezi nimi i Vaše stránka?
Podrobnější přehled nejčastějších chyb v syntaxi HTML nalezne na stránkách Opravy nejčastějších chyb webmasterů.
Co robot vidí navíc?
Tagy META mohou obsahovat kromě příkazů pro (ne)indexaci roboty také klíčová slova a popisek stránky. Tyto údaje se uživateli sice nezobrazí při prohlížení stránky, ale autor tak může sdělit vyhledávačům a podobným robotům, o jakých tématech stránka pojednává. Podrobný popis najdete ve specifikaci HTML a Spidering BOF report. Klíčová slova je několik výrazů od sebe oddělených čárkou, popisek je stručný text.
Příklad:
<META name="keywords" content="prázdniny, Řecko, dovolená"> <META name="description" content="Ideální prázdniny v Řecku">
V tagu META lze navíc pomocí atributu lang specifikovat jazyk, a tak uvést např. klíčová slova v češtině i v angličtině.
Co robot nevidí?
Vyhledávací roboti zpravidla znají pouze HTML, neinterpretují JavaScript ani Java applety ani Visual Basic skripty. Proto veškeré texty produkované tímto způsobem nemohou být do databáze vyhledávače uloženy.
Specifickou kapitolou jsou stránky s obsahem často proměnlivým - ať už častou změnou od autora nebo přímo tak automatem generované, např. "dnešní zprávy" nebo "posledních 10 diskusních příspěvků". Je pochopitelné, že když se obsah takové stránky mění co hodinu nebo každý den, tak obsah získaný vyhledávačem bude v době použití uživatelem buď úplně jiný nebo vůbec nebude existovat. Jak tento problém řešit?
První možnost je samozřejmě takové odkazy nepoužívat. Skoro vždy je možné je nahradit "časově stálými" odkazy, např. odkaz "dnešní zprávy" může 3. 6. 2002 vést na pevnou adresu /zpravy2002-06-03.html a každý den se měnit. pak se sice mění URL odkazu, ale každá stránka je na současném datu nezávislá a může být dosažena i za měsíc, až do doby, než autor danou stránku smaže. To je možné zajistit také automaticky a určit si tak např. počet dní, jak dlouhou historii chceme uchovávat.
V některých případech není první možnost použitelná, protože uživatelé na některých stránkách naopak proměnlivý obsah očekávají, to se týká např. home page. Proto druhá možnost je takové stránky používat, ale zakázat jejich stahování vyhledávačům. Tato možnost je také pohodlnější než první varianta, ale neměli bychom zapomínat, že nejen vyhledávač - ten je koneckonců jen prostředník - ale hlavně uživatelé se chtějí na serveru neztratit a najít informaci, kterou zahlédli už včera. Z tohoto důvodu je dobré se zamyslet nad logickou stavbou serveru a zvolit pro každý konkrétní případ tu nejlepší variantu.
Co robot nechce vidět?
Jedním slovem: podvodníky. Podvádět se dá různě: klíčová slova nesouvisející vůbec s danou stránkou (ale všeobecně oblíbená), stejně tak popisky stránky, (jakoby) neviditelné texty, např. text s barvou pozadí a další metody, jak do stránky vsunout jiný text, který uživatel sice neuvidí, ale autor stránky si tak snaží zajistit častější zobrazení ve vyhledávači. Opak je ale pravdou! Každé takové objevené stránce (ručně nebo automatem) může vyhledávač snížit prioritu na takovou hodnotu, že se pak neukáže skoro nikdy. Podvádět se nemá...
Závěr
Nyní již víte, jak funguje vyhledávací robot a jak zařídit, aby se z nevítaného "šťourala" stal vítaným pomocníkem zvyšujícím počet spokojených uživatelů Vašich stránek.
Reference
Specifikace HTML 4.0
RFC 2616 - specifikace HTTP/1.1
HTML validátor
Použití robots.txt
Spidering BOF report - META tagy důležité pro vyhledávače