สร้าง Sitemap Index sitemap.xml ง่าย ๆขั้นพื้นฐาน
การสร้างไฟล์ sitemap.xml ด้วยโค้ด Python เพื่อช่วยให้ Search Engine รู้จักหน้าเว็บของเรา โดยมีตัวอย่างสำหรับเว็บไซต์ Static ที่ใช้ไฟล์ .html และ .php พร้อมวิธีใช้งานและส่งไปยัง Google & Bing ผ่าน Search Console หรือ ping URL.
แผนผังเว็บไซต์คือไฟล์ที่รวบรวม URL ของหน้าสำคัญในเว็บไซต์ ช่วยให้เครื่องมือค้นหาเข้าใจและเข้าถึงหน้าเว็บได้ง่ายขึ้น ซึ่งส่งผลดีต่อ SEO และการเพิ่มปริมาณการเข้าชม โดยมีวิธีสร้างและส่งแผนผังไปยัง Google เพื่อประสิทธิภาพสูงสุด
1. ทำความเข้าใจ Sitemap และ Sitemap Index
- Sitemap: เป็นไฟล์ XML ที่บอกให้ Search Engine เช่น Google รู้ว่ามีหน้าเว็บไหนบ้างบนเว็บไซต์ของเรา
- Sitemap Index: เป็นไฟล์ XML ที่รวมหลาย ๆ Sitemap ย่อย ทำให้เว็บไซต์ขนาดใหญ่จัดการง่ายขึ้น
2. โครงสร้างมาตรฐานของ sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yourdomain.com/</loc>
<lastmod>2025-08-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://yourdomain.com/about</loc>
<lastmod>2025-08-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
<loc>
= URL ของหน้าเว็บ<lastmod>
= วันที่อัปเดตล่าสุด (รูปแบบYYYY-MM-DD
)<changefreq>
= ความถี่ที่คาดว่าจะอัปเดต (always, hourly, daily, weekly, monthly, yearly, never
)<priority>
= ค่าความสำคัญ (0.0 – 1.0)
3. ตัวอย่างโค้ด Python สำหรับสร้าง sitemap.xml
โค้ดนี้จะอ่าน list ของ URL แล้วเขียนไฟล์ sitemap.xml ให้เลย
import datetime
domain = "https://yourdomain.com"
pages = [
"/",
"/about",
"/contact",
"/products",
"/blog"
]
today = datetime.date.today().isoformat()
sitemap_path = "sitemap.xml"
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for page in pages:
f.write(" <url>\n")
f.write(f" <loc>{domain}{page}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>weekly</changefreq>\n")
f.write(" <priority>0.8</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
4. สร้าง Sitemap สำหรับเว็บ Static (หน้าคงที่)
4.1 สำหรับ (ไฟล์ .HTML ธรรมดา) หน้าคงที่
ถ้าเว็บของคุณเป็น เว็บแบบ Static (HTML ธรรมดา) และมีหลายหน้า เช่น
/index.html
/about.html
/contact.html
/blog.html
/products/product1.html
/products/product2.html
ตัวอย่างโค้ด Python สร้าง Sitemap สำหรับเว็บ Static
import os, datetime
domain = "https://yourdomain.com"
web_dir = "./public_html"
today = datetime.date.today().isoformat()
urls = []
for root, dirs, files in os.walk(web_dir):
for file in files:
if file.endswith(".html"):
rel_path = os.path.relpath(os.path.join(root, file), web_dir)
url = "/" + rel_path.replace("\\", "/")
if url.endswith("index.html"):
url = url.replace("index.html", "")
urls.append(url)
sitemap_path = os.path.join(web_dir, "sitemap.xml")
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for url in urls:
f.write(" <url>\n")
f.write(f" <loc>{domain}{url}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>monthly</changefreq>\n")
f.write(" <priority>0.5</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
โค้ดนี้จะสแกนไฟล์ .html ทั้งหมดในโฟลเดอร์เว็บ แล้วเขียน sitemap.xml อัตโนมัติ
🔹 การใช้งาน
- วางโค้ดนี้ไว้ในโฟลเดอร์โปรเจกต์ (เช่น
generate_sitemap.py
) - รันด้วย
python generate_sitemap.py
- จะได้ไฟล์
sitemap.xml
อยู่ที่ root (public_html/sitemap.xml
) - เปิดใน browser →
https://yourdomain.com/sitemap.xml
- ส่งไปยัง Google & Bing (ใช้ Search Console หรือ ping URL)
4.2 สำหรับเว็บ Static ที่ใช้ไฟล์ .php (หน้าคงที่)
ถ้าเว็บของคุณเป็น เว็บ Static ที่ใช้ไฟล์ .php (เช่น index.php, about.php, contact.php) วิธีสร้าง sitemap.xml ก็จะคล้ายกับกรณี .html เลย เพียงแต่เราต้องดึงไฟล์ .php แทน
/index.php
/about.php
/contact.php
/blog.php
/products/product1.php
/products/product2.php
โค้ด Python สำหรับสร้าง sitemap.xml
จากไฟล์ .php
import os, datetime
domain = "https://yourdomain.com"
web_dir = "./public_html"
today = datetime.date.today().isoformat()
urls = []
for root, dirs, files in os.walk(web_dir):
for file in files:
if file.endswith(".php"):
rel_path = os.path.relpath(os.path.join(root, file), web_dir)
url = "/" + rel_path.replace("\\", "/")
if url.endswith("index.php"):
url = url.replace("index.php", "")
urls.append(url)
sitemap_path = os.path.join(web_dir, "sitemap.xml")
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for url in urls:
f.write(" <url>\n")
f.write(f" <loc>{domain}{url}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>monthly</changefreq>\n")
f.write(" <priority>0.5</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
🔹 การใช้งาน
- วางไฟล์สคริปต์นี้ไว้ในโฟลเดอร์โปรเจกต์ (เช่น
generate_sitemap.py
) - รันด้วย
python generate_sitemap.py
- จะได้ไฟล์
sitemap.xml
อยู่ที่ root (public_html/sitemap.xml
) - ลองเปิดใน browser →
https://
yourdomain
.com/sitemap.xml - นำไป submit ที่ Google Search Console / Bing Webmaster
ถ้าคุณใช้ Shared Hosting อยู่ ซึ่งข้อจำกัดคือไม่อนุญาตให้รันไฟล์ Python โดยตรงบน shared hosting
ดังนั้น การสร้าง sitemap.xml อัตโนมัติ มี 2 ทางเลือก
🔹 ทางเลือกที่ 1 (ง่ายสุด) — ใช้เครื่องเรา (Local) สร้างแล้วอัปโหลด
ติดตั้ง Python บนเครื่องคุณ (Windows/Mac)
รันสคริปต์ Python → จะได้ไฟล์ sitemap.xml
เปิด Command Prompt (Windows) หรือ Terminal (Mac/Linux) แล้วพิมพ์:
python generate_sitemap.py
อัปโหลดไฟล์ sitemap.xml
ไปที่ public_html/
ของ hosting ผ่าน File Manager / FTP
เข้าเบราว์เซอร์เช็ก →
https://yourdomain.com/sitemap.xml
🔹 ทางเลือกที่ 2 — ใช้ PHP สร้าง Sitemap บน Hosting เลย
ถ้าคุณไม่อยากรัน Python ในเครื่อง สามารถเขียนโค้ด PHP สร้าง sitemap.xml อัตโนมัติ ได้เลย
<?php
$domain = "https://yourdomain.com";
$web_dir = __DIR__; // public_html
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($web_dir));
$urls = [];
foreach ($files as $file) {
if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === "php") {
$path = str_replace($web_dir, "", $file->getPathname());
$url = str_replace("\\", "/", $path);
if (basename($url) === "index.php") {
$url = str_replace("index.php", "", $url);
}
$urls[] = $url;
}
}
$today = date("Y-m-d");
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $url) {
$sitemap .= " <url>\n";
$sitemap .= " <loc>{$domain}{$url}</loc>\n";
$sitemap .= " <lastmod>{$today}</lastmod>\n";
$sitemap .= " <changefreq>monthly</changefreq>\n";
$sitemap .= " <priority>0.5</priority>\n";
$sitemap .= " </url>\n";
}
$sitemap .= "</urlset>";
file_put_contents($web_dir . "/sitemap.xml", $sitemap);
echo "✅ Sitemap created at {$domain}/sitemap.xml";
?>
🔹 การใช้งาน
- บันทึกเป็นไฟล์
generate_sitemap.php
- อัปโหลดไปที่
public_html/
- เรียกไฟล์ผ่านเว็บ เช่น
https://yourdomain.com/generate_sitemap.php
- จะได้ไฟล์
sitemap.xml
อยู่ที่ root ทันที
6. มีหน้าใหม่ sitemap.xml อัปเดตอัตโนมัติ
คุณอยากให้ เมื่อมีหน้าใหม่เพิ่มเข้ามา (.php) → sitemap.xml
ถูกอัปเดตอัตโนมัติ เนื่องจากไม่สามารถรัน Python ได้ตรง ๆ เราจะใช้ PHP script ให้มันเช็กไฟล์ .php ที่อยู่ใน public_html ทุกครั้งแล้วเขียน sitemap.xml ใหม่
โค้ด PHP: Auto Generate Sitemap ทุกครั้งที่รัน
<?php
$domain = "https://yourdomain.com";
$web_dir = __DIR__; // public_html
$today = date("Y-m-d");
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($web_dir));
$urls = [];
foreach ($files as $file) {
if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === "php") {
$path = str_replace($web_dir, "", $file->getPathname());
$url = str_replace("\\", "/", $path);
if (basename($url) === "index.php") {
$url = str_replace("index.php", "", $url);
}
$urls[] = $url;
}
}
// sitemap.xml
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $url) {
$sitemap .= " <url>\n";
$sitemap .= " <loc>{$domain}{$url}</loc>\n";
$sitemap .= " <lastmod>{$today}</lastmod>\n";
$sitemap .= " <changefreq>monthly</changefreq>\n";
$sitemap .= " <priority>0.5</priority>\n";
$sitemap .= " </url>\n";
}
$sitemap .= "</urlset>";
file_put_contents($web_dir . "/sitemap.xml", $sitemap);
echo "✅ Sitemap updated at {$domain}/sitemap.xml";
?>
🔹 วิธีใช้งาน
- อัปโหลดไฟล์ generate_sitemap.php ไปที่ public_html
- เรียกไฟล์ใน browser:
https://yourdomain.com/generate_sitemap.php
- → มันจะสร้าง (หรืออัปเดต) sitemap.xml ให้ใหม่ทุกครั้ง
- เวลาเพิ่มไฟล์ .php หน้าใหม่ → แค่รันไฟล์นี้อีกครั้งก็จะอัปเดต sitemap ให้เอง
🔹ทำให้ Auto จริง ๆ (ตั้ง Cron Job ไม่ต้องมากดเอง)
คุณสามารถใช้ Cron Job ของ Hosting ได้ เช่น ตั้งให้รัน generate_sitemap.php ทุกวัน/ทุกสัปดาห์
ใน Hosting hPanel:
- ไปที่ Advanced → Cron Jobs
- เพิ่ม Cron Job เช่น:
php /home/username/public_html/generate_sitemap.php
php /home/username/public_html/generate_sitemap.php
- แล้วตั้งเวลาเป็น วันละครั้ง
แนะนำการจัดการ Sitemap ด้วยไฟล์ดัชนี Sitemap โดยเมื่อ Sitemap มีขนาดเกินกำหนด ควรแยกเป็นหลายไฟล์และใช้ไฟล์ดัชนีเพื่อส่งพร้อมกันได้สูงสุด 500 ไฟล์ต่อเว็บไซต์ใน Search Console รูปแบบ XML ของไฟล์ดัชนีคล้ายกับ Sitemap ปกติ และต้องอยู่ในไดเรกทอรีเดียวกันหรือลึกกว่าเท่านั้น
ข้อมูลเพิ่มเติม https://developers.google.com