Делаем XML карту для сайта

22 августа 2014 Антон Кулешов 1359 0

В этой статье мы рассмотрим один из способов как сделать XML карту для сайта. Вариантов реализации данного функционала множество, но тут я опишу способ который, по моему мнению, наиболее универсальный и удобный.

Реклама

Для начала давайте рассмотрим, какие у нас есть варианты создания XML карты, вот несколько из них:

  1. Использовать различные XML карт генераторы, которые можно найти в интернете;
  2. Написать скрипт, который непосредственно будет работать c XML файлом и изменять его структуру при добавлении контента на сайт;
  3. Третий вариант написать обработчик, который будет эмитировать XML файл.

Возможно, есть и другие варианты, но эти мне пришли сразу на ум. В этой же статье пойдёт речь о третьем способе. Для реализации, которого нам потребуется для начала добавить пару строк в htaccess, если он есть, или создать.

RewriteEngine on
RewriteRule ^sitemap.xml?$ sitemap.php [L,QSA]

Эти два правила и будут выполнять первую часть способа, а именно эмитировать XML документ. RewriteEngine включает механизм преобразования на сервере, вторая строчка задает правило этого преобразования. Фактически когда приходит запрос на XML файл, идет выполнение PHP скрипта, который и выдает нам нужные ссылки для карты в XML формате.

Именно такой принцип, по моему мнению, очень удобен. Используя его, мы можем для каждого поискового робота сделать свою XML карту, немного изменив скрипт.

Теперь приступим к написанию самого обработчика:

// Подключаемся к БД
$db = new mysqli("localhost", "root", "", "db");
$db->set_charset("utf8");
if($db->connect_error){
	echo "<div style='color: red;'>ERROR БД</div>";
	exit;
}

// Вытягиваем нужные данные
$result = $db->query("SELECT id FROM articles");
$row = array();
for($i = 0; $i < $result->num_rows; $i++){
	$row[] = $result->fetch_assoc();
}

// Генерируем XML Карту
header("Content-type: text/xml; charset=UTF-8");

echo('<?xml version="1.0" encoding="UTF-8"?>'."\n");
echo('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n");
	echo("\t<url>\n");
	echo("\t\t<loc>http://mysite.ru</loc>\n");
	echo("\t</url>\n");
	// Ссылки
	foreach($row as $r){
		$url = 'http://mysite.ru/article/id/'.$r['id'];
		echo("\t<url>\n");
		echo("\t\t<loc>$url</loc>\n");
		echo("\t</url>\n");
	}
echo('</urlset>'."\n");

Визуально скрипт делиться на три части: подключение к БД, вытягивание данных (в примере - id статей) и генерация XML файла. В этом скрипте я использовал минимум необходимого кода, поэтому, если вам понравился способ, нужно будет изменить всего пару строк.

В результате мы получим вот такую картину, если обратиться непосредственно к XML файлу.

vyvod-xml-karty

Вот и всё, карта сайта готова.

Реклама
Комментариев еще не оставлено
no_avatar