Sitemap.xml — Zasto vam treba i kako ga napraviti

Kompletni vodic za XML sitemap: format, limiti, robots.txt, Search Console i automatsko generisanje

50%
Brze indeksiranje sa sitemap-om
50K
Max URL-ova po fajlu
50MB
Max velicina fajla
2005
Godina nastanka Sitemaps protokola

1. Sta je sitemap i cemu sluzi

Sitemap.xml je fajl koji sadrzi listu svih javnih URL-ova na vasem sajtu. To je "mapa" koju dajete Google-u da brze i efikasnije pronadje, indeksira i razume strukturu vaseg sajta.

Zamislite Google-ovog crawlera (Googlebot) kao posetioca koji istrazuje vas sajt prateci linkove. Bez sitemap-a, crawler mora sam da otkrije sve stranice — sto moze propustiti duboko ugnezdene ili izolovane stranice. Sa sitemap-om, Google tacno zna koje stranice postoje.

  • Ubrzava indeksiranje — nove stranice se pojavljuju u Google-u brze
  • Pomaze sa izolovanim stranicama — stranice bez internih linkova ka njima
  • Daje prioritet — oznacava koje stranice su vaznije
  • Saopstava promenelastmod govori Google-u sta je azurirano
Google kaze: "Sitemap nije garancija da ce Google indeksirati sve URL-ove, ali se snazno preporucuje, posebno za nove sajtove, velike sajtove i sajtove sa mnogo medija sadrzaja."

2. XML Sitemap format

XML sitemap ima strogu strukturu definisanu Sitemaps protokolom (sitemaps.org). Evo kompletnog primera:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- Glavna stranica — najvisi prioritet -->
  <url>
    <loc>https://vasajt.rs/</loc>
    <lastmod>2026-04-09</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Blog clanak -->
  <url>
    <loc>https://vasajt.rs/blog/seo-vodic</loc>
    <lastmod>2026-04-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- Kontakt stranica — nizi prioritet -->
  <url>
    <loc>https://vasajt.rs/kontakt</loc>
    <lastmod>2026-01-15</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

</urlset>

Elementi objasnjeni

ElementObavezan?Opis
<loc>DAPun URL stranice (sa https:// i domenom)
<lastmod>PreporucenoDatum poslednje izmene (YYYY-MM-DD format)
<changefreq>OpcionoKoliko cesto se menja: always, hourly, daily, weekly, monthly, yearly, never
<priority>OpcionoRelativni prioritet 0.0-1.0 (samo za vas sajt, ne utice na rang vs konkurencija)
Vazno: Google je potvrdio da ignorise changefreq i priority tagove. Jedino loc i lastmod su korisni. Ipak, mnogi ih dodaju jer ih koriste drugi pretrazivaci (Bing, Yandex).

3. Sitemap Index za velike sajtove

Kada sajt ima vise od 50,000 URL-ova (ili sitemap prelazi 50MB), koristite Sitemap Index — master fajl koji referencira vise manjih sitemap fajlova:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <sitemap>
    <loc>https://vasajt.rs/sitemap-blog.xml</loc>
    <lastmod>2026-04-09</lastmod>
  </sitemap>

  <sitemap>
    <loc>https://vasajt.rs/sitemap-products.xml</loc>
    <lastmod>2026-04-08</lastmod>
  </sitemap>

  <sitemap>
    <loc>https://vasajt.rs/sitemap-categories.xml</loc>
    <lastmod>2026-03-15</lastmod>
  </sitemap>

</sitemapindex>

Prednosti Sitemap Index pristupa:

  • Organizacija po tipu sadrzaja (blog, proizvodi, kategorije)
  • Lakse azuriranje — menjate samo sitemap koji se promenio
  • Nema ogranicenja na broj fajlova u index-u
  • Brze procesiranje od strane Google-a

4. Koje stranice ukljuciti, koje ne

UKLJUCITI ✔

  • Sve javne stranice koje zelite u Google rezultatima
  • Glavna stranica, blog clanci, kategorije, proizvodi
  • Stranice sa canonical tagom koji pokazuje na samu sebe
  • Stranice sa statusom 200 (OK)

NE UKLJUCIVATI ✘

  • noindex stranice — kontradiktorno je ubaciti stranicu u sitemap a reci Google-u da je ne indeksira
  • Redirect stranice (301/302) — ubacite samo finalnu destinaciju
  • 404 stranice — mrtvi linkovi u sitemap-u smanjuju "crawl budget"
  • Duplikati — samo canonical verziju svake stranice
  • Parametrizovane URL-ove — /proizvod?color=red (koristite canonical)
  • Admin, login, thank-you — privatne stranice
  • Paginacija — /blog?page=2, /blog?page=3 (opciono, zavisi od strategije)
Greska #1: Sitemap sa 404 i noindex stranicama trosi Google-ov crawl budget i signalizira los kvalitet sajta. Redovno cisitite sitemap!

5. Sitemap i robots.txt

Robots.txt i sitemap rade zajedno. U robots.txt dodajte referencu na vas sitemap:

# robots.txt
User-agent: *
Allow: /

# Blokirajte privatne sekcije
Disallow: /admin/
Disallow: /api/
Disallow: /tmp/

# Referencira sitemap — OBAVEZNO
Sitemap: https://vasajt.rs/sitemap.xml

Zasto oba?

  • Sitemap: direktiva u robots.txt pomaze SVIM pretrazivacima da automatski pronadju vas sitemap
  • Google Search Console submit je direktniji kanal ka Google-u
  • Koristite OBA metoda za maksimalnu pokrivenost
Paznja: Disallow u robots.txt NE sprecava indeksiranje — samo sprecava crawling. Za blokiranje indeksiranja koristite noindex meta tag. Detaljnije u nasem Meta Tagovi vodicu.

6. Submitovanje u Google Search Console

Korak-po-korak proces za submitovanje sitemap-a:

  1. Otvorite Google Search Console
  2. Izaberite vas sajt (property)
  3. U levom meniju kliknite "Sitemaps"
  4. U polje "Add a new sitemap" unesite: sitemap.xml
  5. Kliknite "Submit"
  6. Sacekajte — Google ce procesirati sitemap u roku od nekoliko minuta do sati

Nakon submitovanja, Search Console prikazuje:

  • Status — Success, Has errors, Couldn't fetch
  • Discovered URLs — koliko URL-ova je Google nasao
  • Indexed URLs — koliko je zaista indeksirao (cesto manje od discovered)
  • Last read — kada je Google poslednji put procitao sitemap
Pro tip: Koristite ping URL za automatsko obavestavanje Google-a o promenama: https://www.google.com/ping?sitemap=https://vasajt.rs/sitemap.xml

7. Automatsko generisanje

WordPress

WordPress 5.5+ ima ugradjeni sitemap na /wp-sitemap.xml. Za napredne opcije:

  • Yoast SEO — automatski generise i azurira sitemap sa svim post tipovima, kategorijama i tagovima
  • Rank Math — slicna funkcionalnost + kontrola koje stranice ukljuciti
  • Google XML Sitemaps — lagan plugin samo za sitemap, bez ostalog SEO-a

Next.js / React

// next-sitemap.config.js
module.exports = {
  siteUrl: 'https://vasajt.rs',
  generateRobotsTxt: true,
  changefreq: 'weekly',
  priority: 0.7,
  exclude: ['/admin/*', '/api/*'],
  robotsTxtOptions: {
    policies: [
      { userAgent: '*', allow: '/' },
      { userAgent: '*', disallow: '/admin/' }
    ]
  }
}
// npm install next-sitemap
// Dodajte "postbuild": "next-sitemap" u package.json scripts

Python (programski)

import xml.etree.ElementTree as ET
from datetime import date

urls = [
    {"loc": "https://vasajt.rs/", "priority": "1.0", "freq": "weekly"},
    {"loc": "https://vasajt.rs/blog", "priority": "0.8", "freq": "weekly"},
    {"loc": "https://vasajt.rs/kontakt", "priority": "0.3", "freq": "yearly"},
]

urlset = ET.Element("urlset")
urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")

for u in urls:
    url_el = ET.SubElement(urlset, "url")
    ET.SubElement(url_el, "loc").text = u["loc"]
    ET.SubElement(url_el, "lastmod").text = str(date.today())
    ET.SubElement(url_el, "changefreq").text = u["freq"]
    ET.SubElement(url_el, "priority").text = u["priority"]

tree = ET.ElementTree(urlset)
ET.indent(tree, space="  ")
tree.write("sitemap.xml", encoding="UTF-8", xml_declaration=True)

Staticki sajtovi (rucno ili sa alatom)

  • XML-Sitemaps.com — online generator, crawla vas sajt i pravi sitemap (do 500 URL-ova besplatno)
  • Screaming Frog — desktop crawler sa opcijom za export sitemap-a
  • Rucno — za male sajtove (do 20-30 stranica) rucno pisanje je sasvim ok

8. Dinamicki vs staticki sitemap

KarakteristikaStatickiDinamicki
GenerisanjeRucno ili pri build-uNa zahtev (server generise)
AzuriranjeRucno ili pri deploy-uAutomatski — uvek svez
PerformanseBrz (staticni fajl)Sporiji (generisanje na letu)
PrimerJekyll, Hugo, Vercel staticWordPress, Django, Express
PreporukaSajtovi sa retkim promenamaSajtovi sa cestim novim sadrzajem
Nas pristup: Web Security Scanner koristi staticki sitemap jer je deploy na Vercel-u. Azuriramo rucno kad dodamo nove blog stranice. Za dinamicki sajt sa bazom podataka, dinamicki sitemap je bolji izbor.

9. Limiti i pravila

  • 50,000 URL-ova — maksimum po jednom sitemap fajlu
  • 50MB — maksimalna velicina fajla (nekompresovano)
  • Gzip kompresija — mozete kompresovati sitemap u .gz format za ustedu bandwitha (sitemap.xml.gz)
  • UTF-8 enkodovanje — obavezno za specijalne karaktere
  • Entity encoding — URL-ovi moraju imati escape za & (&amp;), ' (&apos;), " (&quot;)
  • Apsolutne URL adresehttps://vasajt.rs/stranica, nikad relativne putanje
  • Isti domen — sitemap sme da sadrzi samo URL-ove sa istog domena (ili poddomena sa verifikacijom)

10. Najcesce greske

  • Zastareli URL-ovi — 404 stranice u sitemap-u trose crawl budget i signaliziraju los kvalitet
  • noindex + sitemap — kontradiktorno: "indeksiraj ovu stranicu" + "ne indeksiraj ovu stranicu"
  • Redirect URL-ovi — ubacite samo finalnu destinaciju, ne pocetni URL
  • Nedostaje lastmod — bez njega Google ne zna sta je azurirano i crawla sve ponovo
  • Lazan lastmod — menjanje datuma bez stvarne promene sadrzaja. Google detektuje ovo i ignorise lastmod.
  • Relativne URL adrese/stranica umesto https://vasajt.rs/stranica. Nevazeci sitemap.
  • Ne submitovati u Search Console — samo robots.txt referenca nije dovoljna za brzo indeksiranje
  • Prevelik sitemap — prelazi 50K ili 50MB — koristite Sitemap Index

11. Reference i resursi

Proverite sitemap vaseg sajta →

Sitemap.xml — Why You Need It and How to Create One

Complete guide to XML sitemaps: format, limits, robots.txt, Search Console and auto-generation

50%
Faster indexing with sitemap
50K
Max URLs per file
50MB
Max file size
2005
Sitemaps protocol created

1. What is a sitemap and what it does

Sitemap.xml is a file listing all public URLs on your site. It's a "map" you give to Google to find, index, and understand your site structure faster.

Think of Googlebot as a visitor exploring your site by following links. Without a sitemap, the crawler must discover all pages on its own — potentially missing deeply nested or orphaned pages.

Google says: "A sitemap doesn't guarantee Google will index all URLs, but it's strongly recommended, especially for new sites, large sites, and media-rich sites."

2. XML Sitemap format

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://yoursite.com/</loc>
    <lastmod>2026-04-09</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>
ElementRequired?Description
<loc>YESFull URL with https:// and domain
<lastmod>RecommendedLast modified date (YYYY-MM-DD)
<changefreq>OptionalHow often the page changes
<priority>OptionalRelative priority 0.0-1.0 (internal only)
Note: Google confirmed it ignores changefreq and priority. Only loc and lastmod are useful. Other search engines (Bing, Yandex) may still use them.

3. Sitemap Index for large sites

When your site exceeds 50,000 URLs or 50MB, use a Sitemap Index — a master file referencing multiple smaller sitemaps. No limit on the number of files in the index.

4. Which pages to include

Include: All public, indexable pages with status 200 and self-referencing canonical.

Exclude: noindex pages, redirects (301/302), 404 pages, duplicates, parameterized URLs, admin/login pages.

Mistake #1: Sitemap with 404 and noindex pages wastes Google's crawl budget and signals poor site quality.

5. Sitemap and robots.txt

# robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Sitemap: https://yoursite.com/sitemap.xml

Use BOTH the robots.txt Sitemap directive AND Search Console submission for maximum coverage.

6. Submitting to Google Search Console

  1. Open Google Search Console
  2. Select your property
  3. Click "Sitemaps" in the left menu
  4. Enter sitemap.xml and click "Submit"

After submission, Search Console shows: Status, Discovered URLs, Indexed URLs, Last read date.

7. Auto-generation

WordPress: Built-in since 5.5 at /wp-sitemap.xml. Use Yoast SEO or Rank Math for advanced control.

Next.js: Use next-sitemap package with postbuild script.

Python: Generate programmatically with xml.etree.ElementTree.

Static sites: Use XML-Sitemaps.com online generator or Screaming Frog.

8. Dynamic vs static sitemap

FeatureStaticDynamic
GenerationManual or at buildOn request (server generates)
UpdatesManual or at deployAutomatic — always fresh
PerformanceFast (static file)Slower (on-the-fly generation)
Best forRarely changing sitesFrequent new content

9. Limits and rules

  • 50,000 URLs max per sitemap file
  • 50MB max file size (uncompressed)
  • Gzip compression supported (sitemap.xml.gz)
  • UTF-8 encoding required
  • Absolute URLs only (no relative paths)
  • Same domain only

10. Common mistakes

  • Stale URLs — 404 pages in sitemap waste crawl budget
  • noindex + sitemap — contradictory signals
  • Redirect URLs — include only final destination
  • Missing lastmod — Google doesn't know what changed
  • Fake lastmod — changing dates without real changes — Google detects this
  • Relative URLs — invalid sitemap
  • Not submitting in Search Console — robots.txt alone isn't enough

11. References and resources

Check your site's sitemap →