نقشه سایت (Sitemap) یک سند xml میباشد که لینک های مطالب شما را با آخرین تاریخ ویرایش و اهمیت لینک و … فهرست میکند. این فایل در شاخه اصلی وبسایت (ROOT) با نام sitemap.xml ذخیره میشود و هدف از آن آگاه سازی سریع موتورهای جستجو برای فهرست کردن این لینکها در نتایج جستجویشان است. در این مطلب نحوه ساختن نقشه سایت به وسیله php و mysql را توضیح خواهیم داد.
نقشه سایت چیست؟
راهی برای معرفی صفحات سایت شما به موتورهای جستجو است. نقشه سایت که xml Sitemap نام دارد معمولا با نام Sitemap (با S بزرگ) به کار برده میشود، که تمام صفحاتی را که میخواهید قابل دسترس باشد را لیست میکند. ایجاد و ثبت نقشه سایت در موتورهای جستجو به شما این اطمینان را میدهد که تمام صفحات سایت شما در موتورهای جستجو لیست شود. همچنین شما میتوانید از این طریق صفحاتی را که فکر میکنید پیدا کردن آن برای موتورهای جستجو مشکل خواهد بود را نیز معرفی کنید.
نقشه سایت زمانی با اهمیت تر میشود که:
سایت شما از مطالب داینامیک استفاده کند.
سایت شما دارای صفحاتی میباشد که به راحتی توسط روبات موتورهای جستجو قابل دسترسی نیست. مانند صفحاتی که محتویات آن با تکنولوژی Ajax بارگذاری میشود.
سایت شما جدید است و به خوبی در وب لینک دهی نشده است.
سایت شما دارای محتویات حجیم چند صفحه ای است و به خوبی به یک دیگر لینک دهی نشده است
گوگل فهرست کردن تمام صفحات شما را تضمین نمیکند و اظهار میکند که نقشه سایت فقط یک راهنما برای فهرست کردن درست صفحه های وب است.
گوگل از پروتکل استاندارد نقشه سایت که توسط sitemaps.org طراحی شده است استفاده میکند و در حالت کلی نقشه سایت ساخته شده برای تمام موتورهای جستجوی استاندارد قابل فهم است.
فرمت فایل:
کد php:
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/</loc>
<lastmod>2006-11-18</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>
برای آشنایی با المانهای کد بالا میتوانید به لینک تعریف المانها در ویکی پدیا مراجعه کنید.
ایجاد فایل نقشه سایت توسط PHP:
برای ساختن نقشه سایت نیاز به ایجاد اسکلت اولیه آن دایم. برای این کار یک فایل با نام sitemap.php ایجاد کرده و کد زیر را در آن ذخیره کنید:
کد php:
$host = "localhost"; // host name
$user = "user"; // database user name
$pass = "password"; // database password
$database = "dbname"; // database name
// connecting to database
$connect = @mysql_connect($host,$user,$pass)or die (@mysql_error());
// selecting database
@mysql_select_db($database,$connect) or die (@mysql_error());
ایجاد کدهای xml:
کد زیر را در فایل sitemap.xml بعد از کدهای اتصال به پایگاه داده ذخیره کنید:
کد php:
// default header(don't delete)
header("Content-Type: text/xml;charset=iso-8859-1");
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
اضافه کردن url ها در xml:
در کد زیر یک جدول پایگاه داده با نام mytable با فیلدهای url و date برای مطالب در نظر گرفته ایم. کد زیر را بعد از کد بالا در فایل sitemap.xml ذخیره کنید:
کد php:
// selecting data from "mytable"
// mytable = your article table name
$query = @mysql_query("SELECT * FROM mytable");
while($row = @mysql_fetch_array($query)){
// [url] = article url
$url = $row['url'];
// [time] = article date
$date = date("Y-m-d", $row['time']);
// NO CHANGES BELOW
echo
'<url>
<loc>' . $url .'</loc>
<lastmod>'. $date .'</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
';
}
echo '</urlset>';?>
همین! در کل فایل به صورت زیر است:
کد php:
<?php
$host = "localhost"; // host name
$user = "user"; // database user name
$pass = "password"; // database password
$database = "dbname"; // database name
// connecting to database
$connect = @mysql_connect($host,$user,$pass)or die (@mysql_error());
// selecting database
@mysql_select_db($database,$connect) or die (@mysql_error());
// default header(don't delete)
header("Content-Type: text/xml;charset=iso-8859-1");
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// mytable = your content table name
$query = @mysql_query("SELECT * FROM mytable");
while($row = @mysql_fetch_array($query)){
// [url] = content url
$url = $row['url'];
// [time] = content date
$date = date("Y-m-d", $row['time']);
// NO CHANGES BELOW
echo
'<url>
<loc>' . $url .'</loc>
<lastmod>'. $date .'</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
';
}
echo '</urlset>';?>
اگر دقت کرده باشید فایل ما به صورت sitemap.php است و ما میخواهیم به فایل sitemap.xml برسیم. برای این کار کد زیر را در فایل htaccess. در شاخه اصلی وبسایت ذخیره کنید:
کد php:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.*)\.xml(.*) $1.php$2 [nocase]
</IfModule>
بعد از اضافه کردن کد بالا در فایل htaccess. آدرس نقشه سایت شما هنگام فراخوانی، از
www.example.com/sitemap.php به
www.example.com/sitemap.xml تبدیل میشود. یعنی شما آدرس نقشه سایت را با فرمت xml در موتورهای جستجو ثبت خواهید کرد.