NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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 SEOsearch 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:

  1. Odeslání přes rozhraní vyhledávače
  2. 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:
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.


 

Všechny články v sekci
PHP e-commerce
Přeskočit článek
(nedoporučujeme)
Tvorba sitemapy v PHP
Článek pro vás napsal Jakub Kornel
Avatar
Uživatelské hodnocení:
11 hlasů
Aktivity