(((Web Dev No.3))) การสร้างไฟล์ sitemap ที่ถูกต้องสำหรับ search engine ต่างๆ

เริ่มโดย nistelbooy, 11 พฤศจิกายน 2011, 15:53:08

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

nistelbooy

วันนี้(ไม่)ว่าง เบื่อๆ เซ็งๆ เลยมานั่งเขียนบทความให้เพื่อนๆชาวไทยเสียวที่ กำลังหัดทำเว็บนะครับ ถูกใจก็  1 ครับ อิอิ

วันนี้ขอเสนอการทำ sitemap ที่ถูกต้อง สำหรับนำไปใช้ submit ในsearch engine ต่างๆ โดยเฉพาะ Google


โดยปกติแล้วเจ้า Google นี้จะมีให้ส่ง sitemap ใน google webmaster tools นะครับ โดยจะมีให้ใส่ไฟล์สองแบบคือ

sitemap.xml กับ sitemap.xml.gz (อันหลังนี่ผมก็ไม่รู้ว่าคืออะไร อิอิ)

นี่คือหน้าตาของส่วนการจัดการ sitemap ใน google webmaster tools นะครับ ถ้า sitemap ถูกต้อง จะเป็นหน้าตาแบบนี้นะครับ





ถ้าเว็บไซต์ใหนทำได้ถูกต้องรับรองบอทวิ่งมาหาเร็วมากครับ ไม่กี่ชั่วโมงก็ index แล้ว ทำให้ติดอันดับได้ง่าย ถ้าเราอัพเดตบทความแล้วอัพเดต sitemap บ่อยๆ อาจจะวันละครั้งสองครั้งก็ได้ครับ

รูปแบบ sitemap โดยเราจะต้องสร้างไฟล์ที่เป็น .xml นะครับ


<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.yourwebsite.com</loc>
<lastmod>2011-10-31</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.yourwebsite.com/article1.html</loc>
<lastmod>2011-10-31</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.yourwebsite.com/article2.html</loc>
<lastmod>2011-10-31</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.yourwebsite.com/article3.html</loc>
<lastmod>2011-10-31</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>


คำอธิบาย (ที่จริงไม่ต้องรูปก็ได้ครับ แค่ทำตามตัวอย่างก็พอละ อิอิ)

บรรทัดแรก คือการประกาศว่า เอกสารนี้เป็น xml เวอร์ชั่นอะไร (ปัจจุบัน 1.0) และ encode ด้วยอะไร ตัวอย่างนี้ เว็บไซต์เราเป็น UFT-8 ก็ใส่ UTF-8 ครับ หรือจะ TIS-620,windows-874 ก้แล้วแต่ครับ ตามสะดวก

บรรทัดที่สอง ข้ามไปนะครับ เป็นการประกาศฟอร์แมต อะไรสักอย่างเนี่ยแหล่ะ หุหุ

บรรทัดถัดมา จะเป็นโครงสร้างที่อยู่ภายใน url นะครับ โดย

loc คือ link ของบทความหรือหน้าเว็บเพจ
lastmod คือ วันที่อัพเดตล่าสุด
changefreq คือ กำหนดว่าเพจเราเปลี่ยนแปลงบ่อยแค่ไหน เช่น daily,monthly
priority คือ ความสำคัญของเพจนั้นๆนะครับ


เมื่อสร้างไฟล์เสร็จแล้ว เข้าไปที่ google webmaster tools แล้วกดส่งอีกครั้ง นะครับ หรือจะ ping ด้วยทางลัด ตามurl ข้างล่างนี้นะครับ

hxxp://www.google.com/ping?sitemap=http://www.yourwebsitename.com/sitemap.xml

hxxp://www.google.com/ping?sitemap=http://www.yourwebsitename.com/sitemap.xml.gz

ตัวอย่างโค้ดข้างบนจะเป็น แบบ manual นะครับ ทีนี้มาดูการ query จากฐานข้อมูลกันครับ ง่ายๆ ด้วย php+mysql

โดยสร้างไฟล์ sitemap.xml, sitemap.xml.gz ขึ้นมา แล้วกำหนด chmod เป็น 0777 นะครับ


<?php ob_start();
header("Content-Type:text/html; charset=UTF-8");

// เชื่อมต่อ server+database
$_connect_server mysql_connect("localhost","user","password") or die(mysql_error());
$_connect_db mysql_select_db("database_name") or die(mysql_error());
mysql_query("set names utf8") or die(mysql_error());

// เริ่ม sitemap
$string  '<?xml version="1.0" encoding="UTF-8"?>
';
$string .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

# main
$string .= '<url>';
$string .= '<loc>http://www.yourwebsitename.com</loc>';
$string .= '<lastmod>'.date("Y-m-d").'</lastmod>';
$string .= '<changefreq>daily</changefreq>';
$string .= '<priority>0.8</priority>';
$string .= '</url>';

# ดึงข้อมูล
$sql = "SELECT * FROM table_name ORDER BY last_id DESC";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
$string .= '<url>';
$string .= '<loc>http://www.yourwebsitename.com/article.php?id='.$record['article_id'].'</loc>';
$string .= '<lastmod>'.date("Y-m-d").'</lastmod>';
$string .= '<changefreq>daily</changefreq>';
$string .= '<priority>0.8</priority>';
$string .= '</url>';
}

$string .= '</urlset>';
// จบการสร้างโค้ด

// เขียนโค้ดลงไฟล์ sitemap
// sitemap.xml Chmod 0777
$sitemap1 = "sitemap.xml";
$handle1 = fopen($sitemap1, 'w') or die("ไม่สามารถเปิดไฟล์ได้");
fwrite($handle1, $string);
$sitemap2 = "sitemap.xml.gz";
$handle2 = fopen($sitemap2, 'w') or die("ไม่สามารถเปิดไฟล์ได้");
fwrite($handle2, $string);
fclose($handle2);

echo "สร้าง Sitemap เรียบร้อย";
?>



:wanwan017: ขอบคุณครับ กดบวกหน้าตาดีกันทุกคนครับ


*************
บทความทั้งหมด

(((Web Dev No.1))) การใช้งาน CKEditor CKFinder สามารถอัพโหลดไฟล์ได้
(((Web Dev No.2))) การใช้ jquery ui เพื่อทำ slider ย่อ-ขยาย font ในหน้าเว็บเพจ
(((Web Dev No.3))) การสร้างไฟล์ sitemap ที่ถูกต้องสำหรับ search engine ต่างๆ
วิธีทำ SEO Friendly URL สำหรับ SMF Forum (แบบ manual ง่ายๆ)
แจกโค้ด php อย่างง่ายๆ ครับ เอาไปประยุกต์ใช้งานได้ รอบที่ 1
แจกโค้ด PHP แสดงบอทมาเก็บข้อมูล... เก็บลง textfile

*************
งดรับงาน

sawit


marus