Sitemap.xml — Zasto vam treba i kako ga napraviti
Kompletni vodic za XML sitemap: format, limiti, robots.txt, Search Console i automatsko generisanje
Sadrzaj
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 promene —
lastmodgovori Google-u sta je azurirano
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
| Element | Obavezan? | Opis |
|---|---|---|
<loc> | DA | Pun URL stranice (sa https:// i domenom) |
<lastmod> | Preporuceno | Datum poslednje izmene (YYYY-MM-DD format) |
<changefreq> | Opciono | Koliko cesto se menja: always, hourly, daily, weekly, monthly, yearly, never |
<priority> | Opciono | Relativni prioritet 0.0-1.0 (samo za vas sajt, ne utice na rang vs konkurencija) |
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)
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
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:
- Otvorite Google Search Console
- Izaberite vas sajt (property)
- U levom meniju kliknite "Sitemaps"
- U polje "Add a new sitemap" unesite:
sitemap.xml - Kliknite "Submit"
- 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
ping URL za automatsko obavestavanje Google-a o promenama: https://www.google.com/ping?sitemap=https://vasajt.rs/sitemap.xml7. 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
| Karakteristika | Staticki | Dinamicki |
|---|---|---|
| Generisanje | Rucno ili pri build-u | Na zahtev (server generise) |
| Azuriranje | Rucno ili pri deploy-u | Automatski — uvek svez |
| Performanse | Brz (staticni fajl) | Sporiji (generisanje na letu) |
| Primer | Jekyll, Hugo, Vercel static | WordPress, Django, Express |
| Preporuka | Sajtovi sa retkim promenama | Sajtovi sa cestim novim sadrzajem |
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
&(&),'('),"(") - Apsolutne URL adrese —
https://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 —
/stranicaumestohttps://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
- Google Search Central — Sitemaps Overview
- Google — Build and Submit a Sitemap
- Sitemaps.org — XML Sitemap Protocol
- Google — Robots.txt Introduction
- XML-Sitemaps.com — Online Generator
- next-sitemap — Next.js Sitemap Generator
- MDN — Robots.txt
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
Table of Contents
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.
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>
| Element | Required? | Description |
|---|---|---|
<loc> | YES | Full URL with https:// and domain |
<lastmod> | Recommended | Last modified date (YYYY-MM-DD) |
<changefreq> | Optional | How often the page changes |
<priority> | Optional | Relative priority 0.0-1.0 (internal only) |
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.
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
- Open Google Search Console
- Select your property
- Click "Sitemaps" in the left menu
- Enter
sitemap.xmland 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
| Feature | Static | Dynamic |
|---|---|---|
| Generation | Manual or at build | On request (server generates) |
| Updates | Manual or at deploy | Automatic — always fresh |
| Performance | Fast (static file) | Slower (on-the-fly generation) |
| Best for | Rarely changing sites | Frequent 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
- Google — Sitemaps Overview
- Sitemaps.org — Protocol Specification
- Google — Robots.txt
- XML-Sitemaps.com — Online Generator
- next-sitemap — Next.js Generator