Lekce 1 - Jak na sitemapu v PHP
Vítejte u dvoudílné série o sitemapách. V prvním článku se společně zaměříme na problematiku sitemap spíše teoreticky. Na začátku si vysvětlíme, co to vůbec sitemapa je a proč ji používat. Poté si ukážeme, jak taková sitemapa vypadá, co musí obsahovat a splňovat. Nakonec si ukážeme způsoby tvorby sitemapy. Ve následujícím díle si vytvoříme automatický generátor sitemap v PHP.
Co je sitemapa?
Sitemapa je, jak název napovídá, mapa všech různých podstránek na jedné doméně ve formátu XML. Podstatné je, že není určená pro lidi, ale pro roboty. Ať už od Googlu nebo od jiných společností. Sitemapa tedy pomáhá robotům při procházení stránek.
Proč používat sitemapu?
Jak jsem již psal výše, sitemapa robotům zjednodušuje procházení podstránek, což je velmi důležité pro SEO – search engine optimalization (optimalizace pro vyhledávače), o kterém je celý kurz tady na itnetwork. Hlavním účelem je dát jednoduše robotům přístup k podstránkám, které by pro ně jinak byly těžko dosažitelné (například podstránky v podstránkách a v podstránkách...).
Použití se doporučuje hlavně ve 3 různých případech webu:
- začínající web – aby všechny stránky Google lépe objevil a mohl je tak dát do svého vyhledávače.
- hodně rozvětvený web se spoustou podstránek a odkazů
- velký web
Zmínil jsem sice pouze vyhledávač Google, ale jedná se o všechny vyhledávače. Další mohou být například Seznam, Yandex, Yahoo, DuckDuckGo a další.
Jak vypadá sitemapa?
Maximální velikost každé sitemapy Google určil na 50 tis. záznamů (50 MB). Jak jsem naznačil na začátku, sitemapa je XML soubor. Sitemapa může mít však i příponu HTML či přímo PHP, nemusí mít příponu XML. Pro XML soubor přidáme na začátek souboru následující tag:
<?xml version="1.0" encoding="UTF-8"?>
který určuje, že se bude jednat o XML soubor a nastavuje kódování na
UTF-8
. Dále se sitemapa dělí na dva základní typy:
- jednoduchá sitemapa a
- Indexová sitemapa.
1. Jednoduchá sitemapa
U jednoduché sitemapy se vše nachází v jednom souboru. Pojďme si společně představit používané XML tagy:
tag (element) | povinnost | popisek |
---|---|---|
<urlset> |
povinný | Obaluje celou sitemapu a uvádí odkaz na aktuální
standard protokolu pomocí atributu xmlns . |
xmlns |
povinný | Atribut <urlset> , který odkazuje na standard sitemap:
http://www.sitemaps.org/schemas/sitemap/0.9 . |
<url> |
povinný | Obaluje tagy jedné konkrétní podstránky (je rodičovským tagem pro všechny následující tagy). |
<loc> |
povinný | Odkaz na konkrétní podstránku. |
<lastmod> |
nepovinný | Datum poslední změny podstránky ve formátu W3C Datetime nebo RRRR-MM-DD. |
<priority> |
nepovinný | Důležitost podstránky vůči ostatním podstránkám pouze na našem webu (tím, že dáte všem stránkám priority 1.0 ničemu nepomůžete). Nabývá hodnot od 0.0 až do 1.0 (defaultní je 0.5). |
<changefreq> |
nepovinný | Četnost změny podstránky. |
Tag <changefreq>
může nabývat hodnot:
- always - změna při každé návštěvě
- hourly
- daily
- weekly
- monthly
- yearly
- never - archivované url (například soubory, které se nikdy nezmění)
K tabulce ještě musím dodat, že roboti se vámi
poskytnutými daty u nepovinných elementů neřídí, ale
používají je pouze jako nápovědu. To znamená, že
přestože si dáte např.:
<changefreq>weekly</changefreq>
, robot danou stránku
nemusí každý týden navštěvovat. Informace pro něj slouží pouze jako
jedna z mnoha, podle kterých se rozhoduje.
V následujícím příkladu jsou vidět nejrozmanitější kombinace tagů v sitemapě, abyste viděli jejich použití (v praxi se dobrovolné tagy velmi často vynechávají):
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/</loc> <lastmod>2021-08-05</lastmod> <changefreq>always</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.example.com/elektronika/mobilni-telefony/apple-12-pro</loc> <changefreq>monthly</changefreq> </url> <url> <loc>http://www.example.com/elektronika/mobilni-telefony/nokia-3310</loc> <lastmod>2017-11-01</lastmod> <changefreq>never</changefreq> </url> <url> <loc>http://www.example.com/elektronika/prislusenstvi/nabijecka-samsung-a10</loc> <lastmod>2020-12-23T18:00:15+00:00</lastmod> <priority>0.3</priority> </url> <url> <loc>http://www.example.com/mobilni-telefony</loc> <lastmod>2015-11-23</lastmod> </url> </urlset>
2. Indexová sitemapa
Indexová sitemapa obsahuje odkazy na více jednoduchých sitemap. Její tagy jsou velmi podobné jako u jednoduché sitemapy. Zde přikládám jejich seznam:
tag (element) | povinnost | popisek |
---|---|---|
<sitemapindex> |
povinný | Obaluje celou sitemapu (ekvivalent <urlset> z jednoduché
sitemapy) |
xmlns |
povinný | Obsahuje odkaz na standard sitemapy (viz výše u jednoduché sitemapy) |
<sitemap> |
povinný | Obaluje tagy pro jednu sitemapu (ekvivalent <url> z
jednoduché sitemapy) |
<loc> |
povinný | Odkazuje na sitemapu (stejné jako <loc> v jednoduché
sitemapě) |
<lastmod> |
nepovinný | Datum poslední modifikace dané sitemapy (stejné jako
<lastmod> u jednoduché sitemapy) |
Příklad indexové sitemapy:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>http://www.example.com/sitemap1.xml.gz</loc> <lastmod>2004-10-01T18:23:17+00:00</lastmod> </sitemap> <sitemap> <loc>http://www.example.com/sitemap2.xml.gz</loc> <lastmod>2005-01-01</lastmod> </sitemap> </sitemapindex>
Tuto sitemapu využívá síť itnetwork. Můžete ji navštívit na této URL adrese.
Escapování
Odkazy v sitemapě musí být tzv. escapovány (nesmí se používat speciální znaky jako např.: háčky, čárky, apod.).
Umístění souboru
Soubor se sitemapou se nejčastěji umisťuje do kořenové složky (tam kde
je index), takže se dá najít pod odkazem
example.com/sitemap.xml
. Toto se používá z jednoduchého
důvodu, sitemapa nesmí odkazovat na jiné podstránky, takže například
sitemapa umístěná v example.com/catalog/sitemap.xml
už by
nemohla odkazovat na example.com/menu/homepage
. Toto všechno však
neplatí v případě, že dokážeme, že máme přístup k root složce
projektu a přidáme odkaz na sitemapu do souboru robots.txt
, viz
dále. Například síť itnetwork sitemapu také nemá v kořenovém
adresáři.
Jak dát Googlu o sitemapě vědět?
Jakmile máte sitemapu hotovou a umístíte jí na stránky, musíte dát Googlu nějak vědět, že tento soubor existuje. Máme 3 možnosti:
- Odeslání přes rozhraní vyhledávače
- http://www.google.com/…sters/tools/ - projdete relativně jednoduchou cestou, po které vás Google relativně dobře provede
- Přidání odkazu na sitemapu do souboru robots.txt
(případ itnetwork)
- Tato možnost se používá velmi často, protože je velmi jednoduchá.
Musíte vytvořit (pokud ho nemáte) soubor
robots.txt
v kořenovém adresáři, který vložíme opět do hlavní složky projektu (tam, kde je index). Dále jen přidáme řádek s kódem:
- Tato možnost se používá velmi často, protože je velmi jednoduchá.
Musíte vytvořit (pokud ho nemáte) soubor
Sitemap: http://www.example.com/sitemap.xml
a máte vystaráno. V souboru robots.txt
můžete mimochodem i
blokovat robotům procházení vašich stránek a to pomocí kódu
User-agent:
„název robota“ (* je znak pro
všechny), Disallow:
„jedna stránka, kterou nechci, aby
robot procházel“ (/
je pro všechny). Opět musím
říci, že se tím roboti řídit nemusí. 3. Poslání
http dotazu
- Jednoduše pošleme http dotaz (to v praxi znamená zadat následující url
do vyhledávače) na:
url_vyhledavace/ping?sitemap=url_sitemapy
např.:
https://www.google.com/ping?sitemap=https://www.example.com/sitemap.xml
Validace
Pro validaci sitemap je ideální použít následující následující nástroj: https://www.xml-sitemaps.com/…sitemap.html. Ten vám po zadání url řekne, zda vaše sitemapa obsahuje chyby.
Způsoby tvorby sitemapy
1. Vytvořit sitemapu ručně
Tuto možnost bych mohl doporučit pouze u menších statických webů. Výhodou je, že si můžete dopsat více nepovinných tagů, které ostatní řešení nenabízejí. Pro všechny ostatní typy webů je tato možnost naprosto nevhodná.
2. Vygenerovat sitemapu přes generátor
Na internetu existuje spousta možností generátorů. Nejznámější je asi https://www.xml-sitemaps.com/…nerator.html, který vytvoří sitemapu po zadání url. Je k dispozici zdarma do 500 podstránek, unlimited verze je za $20 (kolem 450 Kč). Tato možnost se dá velmi dobře využít pro středně velké statické weby, které se moc nemění a nepoužívají PHP pro vlastní generování stránek.
3. Skript v PHP
Této možnosti je věnován celý druhý díl, kde si ukážeme automatickou generaci vlastních stránek v PHP.
Závěr
Výborně, teorii máme za sebou. Už víme, co to sitemapa je, jak vypadá, co musí obsahovat a splňovat, jak o ní dát vědět Googlu, jak ji zvalidovat a taky jsme naťukli způsoby tvorby.
V příští lekci, Tvorba sitemapy v PHP, se podíváme na sitemapy z praktického pohledu a jednu si s využitím PHP vytvoříme.